#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
void DFS(vector<string>& res,string digits,int k,int size,string one, vector<string> letters) {
if (k == size) {
res.push_back(one);
return;
}
string num =letters [digits[k] - '0'-2];
for (int j = 0; j < num.size(); j++) {
DFS(res, digits, k + 1, size, one + num[j], letters);
}
}
vector<string> letterCombinations(string digits) {
vector<string> letters = { "abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };
vector<string> res;
if (digits.size() == 0) return res;
int k = 0;
int size = digits.size();
string one;
DFS(res,digits, k,size,one,letters);
return res;
}
};
int main() {
Solution solution;
string digits = "23";
vector<string>res = solution.letterCombinations(digits);
return 0;
}