#include <iostream>
#include <vector>
#include <string>
using namespace std;
void getCombination(vector<string> &combinations, string current, const string &A, int idx, const vector<string> &keyset){
      if(idx >= A.size()) {
          combinations.push_back(current);
          return;
      }
      int key = (A[idx] - '0');
      int len = keyset[key].length();

      for( int i = 0; i < len; i++ ){ 
          current.push_back(keyset[key][i]);  //pick at once one char corresp. to that keypress
          getCombination(combinations, current, A, idx+1, keyset);
          current.pop_back();
      }
}

vector<string> letterCombinations(string A) {
    vector<string> combinations;
    vector<string> keyset{"0", "1", "2abc", "3def", "4ghi", "5jkl", "6mno", "7pqrs", "8tuv", "9wxyz"};
    getCombination(combinations, std::string({}), A, 0, keyset);  
    return combinations;
}

int main() {
	vector<string> combinations = letterCombinations("23");
	for(string word : combinations){
	    cout << word << ", ";
	}
	return 0;
}