#include #include #include #include // 0000111122223333444455556666777788889999 #define ALIGNMENT " abc def ghi jkl mno pqrstuv wxyz" using namespace std; static map digits2word; void solve(string digits, string text = "") { if(digits.empty()) { cout << text.substr(1) << "." << endl; } for(int i = 1; i <= digits.length(); i++) { string s = digits.substr(0, i); if(digits2word.find(s) != digits2word.end()) { solve(digits.substr(i), text + " " + digits2word[s]); } } } int main(void) { ifstream cin("press.txt"); int n; while(cin >> n) { if(n == 0) break; digits2word.clear(); for(int i = 0; i < n; i++) { string word; cin >> word; string digits; for(int j = 0; j < word.length(); j++) { char digit = (string(ALIGNMENT).find(word[j]) / 4) + '0'; digits += string(1, digit); } digits2word.insert(make_pair(digits, word)); } string query; cin >> query; solve(query); cout << "--" << endl; } return 0; }