public void dfs(List<String> res, String s, int begin, int dot, String temp) {
        if (dot == 3) {
            if (temp.length() - 3 != s.length())
                return;
            String[] str = temp.split("\\.");
            if (checkValid(str[str.length - 1])) {
                res.add(temp);
            }
            return;
        }
        for (int i = begin; i < s.length(); ++i) {
            String str = s.substring(begin, i + 1);
            if (!checkValid(str))
                break;
            if (temp.length() != 0)
                dfs(res, s, i + 1, dot + 1, temp + "." + str);
            else
                dfs(res, s, i + 1, 0, str);
        }
    }