public static List<String> permuteAsStrings(List<Character> chars) {
        List<List<Character>> charLists = new ArrayList<List<Character>>();
        List<String> result = new ArrayList<String>();
        permute(chars, 0, charLists);
        for (List<Character> charList : charLists) {
            StringBuilder sb = new StringBuilder();
            for (Character c : charList) {
                sb.append(c);
            }
            result.add(sb.toString());
        }
        return result;
    }