public void dfs(List<List<String>> res, String s, int begin, List<String> temp) {
        if (begin > s.length() - 1) {
            res.add(new ArrayList<>(temp));
            return;
        }
        for (int i = begin; i < s.length(); ++i) {
            String subString = s.substring(begin, i + 1);
            if (!check(subString))
                continue;
            temp.add(subString);
            dfs(res, s, i + 1, temp);
            temp.remove(temp.size() - 1);
        }
    }