import java.util.*; public class PrintWords { static String[] mapping = {"0", "1", "abc", "def", "ghi", "jkl"}; public static void printWords(ArrayList nums) { printWords(nums, 0, ""); } public static void printWords(ArrayList nums, int position, String prefix) { //Base case if(position == nums.size()-1) { String currentmapping = mapping[nums.get(position)]; //System.out.println("position = " + position + " mapping: " + currentmapping); for(int i = 0; i < currentmapping.length(); i++) { System.out.println(prefix + currentmapping.charAt(i)); } } else { String currentmapping = mapping[nums.get(position)]; for(int i = 0; i < currentmapping.length(); i++) { printWords(nums, (position+1), (prefix + currentmapping.charAt(i))); } } } public static void main(String[] args) { ArrayList nums = new ArrayList(); nums.add(2); nums.add(3); nums.add(4); //nums.add(5); printWords(nums); } }