#include #include #include #include #include using namespace std; int N, nr; string s[32]; string cur; vector v[32]; vector sol; int numar[32]; int start[32]; void addDigit(int idx){ int n = numar[idx]; while(start[idx] < v[n].size()){ cur = cur + v[n][start[idx]]; if(idx < nr) addDigit(idx+1); else{ sol.push_back(cur); } cur = cur.substr(0, cur.length() - 1); start[idx]++; } start[idx]=0; } int main(){ //freopen("fis.in", "r", stdin); N = 10; for(int i =1 ; i <= N; ++i){ cin >> s[i]; for(int j = 0; j < s[i].length(); ++j){ if(find(v[i-1].begin(), v[i-1].end(), s[i][j]) == v[i-1].end()) v[i-1].push_back(s[i][j]); } } char c; scanf("\n"); for(int i =1 ; i <= nr; ++i){ sort(v[i].begin(), v[i].end()); } while(scanf("%c", &c) != EOF && c != ' ' && c != '\n'){ int p = c - '0'; numar[++nr] = p; } cur = ""; addDigit(1); sort(sol.begin(), sol.end()); for(vector::iterator it = sol.begin(); it != sol.end(); ++it){ printf("%s\n", (*it).c_str()); } return 0; }