public void tryNext(String digits, int pos, char[] has, ArrayList<String> res) {
        if(pos == digits.length()) {
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < pos; i++) sb.append(has[i]);
            res.add(sb.toString());
            return;
        }
        char ch = digits.charAt(pos);
        if(ch == '1') {
            has[pos] = '_';
            tryNext(digits, pos+1, has, res);
        } else if(ch == '0') {
            has[pos] = ' ';
            tryNext(digits, pos+1, has, res);
        } else {
            int k = ch - '2';
            for(int i = offset[k]; i < offset[k+1]; i++) {
                has[pos] = (char) (i + 'a');
                tryNext(digits, pos+1, has, res);
            }
        }
    }