private static int dfs(final String str, final int len, final long sum) { if (len == 1) { return sum - Long.valueOf(str.substring(0)) == 0 ? 1 : 0; } final long val = Long.valueOf(str.substring(len - 1)); final int noRes = dfs(str, len - 1, sum); final int addRes = dfs(str.substring(0, len - 1), len - 1, sum - val); final int minusRes = dfs(str.substring(0, len - 1), len - 1, sum + val); return addRes + minusRes + noRes; }