public void dfs(int[] arr, int start, int end){
        if(start > end){
            result.add(single.toString());
            return;
        }

        //Single number
        int num = arr[start];
        if(num >= 1 && num <= 26){
            single.append((char)(num + 96));
            dfs(arr, start + 1, end);
            single.deleteCharAt(single.length() - 1);
        }

        //Two numbers
        if(start < end){
            num = arr[start] * 10 + arr[start + 1];
            if(num >= 10 && num <= 26){
                single.append((char)(num + 96));
                dfs(arr, start + 2, end);
                single.deleteCharAt(single.length() - 1);
            }
        }
    }