List<List<Integer>> lists = new ArrayList<>();     private int sumCounts(String t, int k) {         List<Integer> sublist = new ArrayList<>();         dfs(t, k, 0, sublist);         return lists.size();     }     private void dfs(String t, int k, int start, List<Integer> sublist) {         int sum = 0;         for (int i = 0; i < sublist.size(); i++) {             if (sublist.get(0)<0)return;             sum += sublist.get(i);         }         if (sum == k && start == t.length()) {             lists.add(new ArrayList(sublist));             return;         }         if (sublist.size() == t.length()) return;         for (int i = start; i < t.length(); i++) {             int i1 = Integer.parseInt(t.substring(start, i + 1));             sublist.add(i1);             dfs(t, k, i + 1, sublist);             sublist.remove(sublist.size() - 1);             sublist.add(-i1);             dfs(t, k, i + 1, sublist);             sublist.remove(sublist.size() - 1);         }