public ArrayList<String> letterCombinations(String digits){
		ArrayList<String> result = new ArrayList<>();
		if(digits.length() == 0){
			result.add("");
			return result;
		}
		for(int i = 0; i < digits.length(); ++i){
			String stringFromButton = getStringFromButton(digits.charAt(i));
			int length = stringFromButton.length();
			if(result.size() == 0){
				for(int j = 0; j < length; ++j){
					result.add("" + stringFromButton.charAt(j));
				}
			}else{
				//copy length - 1 times:
				int copySize = result.size();
				for(int j = 1; j < length; ++j){
					for(int k = 0; k < copySize; ++k){
						result.add(new String(result.get(k)));
					}
				}
				//add to tail:
				for(int j = 0; j < length; ++j){
					for(int k = 0; k < copySize; k++){
						String tempString = result.get(j*copySize + k).concat("" + stringFromButton.charAt(j));
						result.set(j*copySize + k, tempString);
					}
				}
			}
		}
		return result;
	}