ArrayList<String> combine2(String digits, HashMap<Integer, ArrayList<String>> map) {
		ArrayList<String> res = new ArrayList<String>();
		if(digits.length() == 0){
			res.add("");
			return res;
		}
		char c = digits.charAt(0);
		ArrayList<String> sub = combine2(digits.substring(1), map);
		for (String letter : map.get(c - '0')) {
			for (String str : sub) {
				res.add(letter + str);
			}
		}
		return res;
	}