public List<String> wordAbbreviation(String s) {
        lists = new LinkedList<>();
        cache = new List[s.length() + 1];
        cache[0] = new LinkedList<>();
        cache[0].add("");
        for (int i = 1; i <= s.length(); ++i) {
            cache[i] = new LinkedList<>();
            for (int j = 0; j < i; ++j) {
                for (String k : cache[j]) {
                    cache[i].add(k + (i - j));
                }
            }
        }
        for (int i = 0; i < s.length(); ++i) {
            for (int j = i + 1; j <= s.length(); ++j) {
                helper(s, i, j);
            }
        }
        return lists;
    }