public void helper(int begin, String s, ArrayList<String> temp) {
        if (begin > s.length() - 1) {
            ans.add(new ArrayList<>(temp));
            return;
        }
        for (int i = begin; i < s.length(); ++i) {
            if (!valid(s, begin, i)) {
                continue;
            }
            String sub = s.substring(begin, i + 1);
            temp.add(sub);
            helper(i + 1, s, temp);
            temp.remove(temp.size() - 1);
        }
    }