Getting correct output yet showing incorrect answer

import java.util.*;

public class Main{

    public static void main(String args[]){
    Scanner fr=new Scanner(System.in);

    String table[]={" ", ".+@$", "abc", "def", "ghi", "jkl" , "mno", "pqrs" , "tuv", "wxyz"};
    String str=fr.nextLine();

    String keeper=table[Integer.parseInt(String.valueOf(str.charAt(0)))];

    for(int i=0;i<keeper.length();i++){
        for(int j=1;j<str.length();j++){
            String temp=keeper.charAt(i)+table[Integer.parseInt(String.valueOf(str.charAt(j)))];
            ArrayList<String> ssKeeper=getSS(temp);
            for(String adder:ssKeeper){
                if(adder.length()==str.length() && adder.charAt(0)==keeper.charAt(i)){
                    System.out.println(adder);
                }
            }
        }
    }
}

static ArrayList<String> getSS(String str){
    if(str.length()==0){
        ArrayList<String>ret=new ArrayList<>();
        ret.add("");
        return ret;
    }
    ArrayList<String>output=new ArrayList<>();

    ArrayList<String>temp=getSS(str.substring(1));
    for(String adder:temp){
        output.add(adder);
        output.add(str.charAt(0)+adder);
    }

    return output;
}

}