import java.util.*;


public class Solution {
    ArrayList<String> res = new ArrayList();
    String[] mapping = new String[]{
        "","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"
    };
    public ArrayList<String> phoneNumber (String num) {
        backtrack(num,0,new StringBuilder());
        return res;
    }
    private void backtrack(String num,int start,StringBuilder sb){
        if(sb.length() == num.length()){
            res.add(sb.toString());
            return;
        }
        char dight = num.charAt(start);
        for(char c:mapping[dight-'0'].toCharArray()){
            sb.append(c);
            backtrack(num,start+1,sb);
            sb.deleteCharAt(sb.length()-1);
        }
    }
}