#include #include #include #include #include using namespace std; int N, nr; string s[32]; vector v[32]; vector sol; int numar[32]; int start[32]; void addDigit(int idx, string s){ int n = numar[idx]; while(start[idx] < v[n].size()){ if(idx < nr) addDigit(idx+1, s + v[n][start[idx]]); else{ sol.push_back(s + v[n][start[idx]]); } 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){ int p = c - '0'; numar[++nr] = p; } addDigit(1, ""); sort(sol.begin(), sol.end()); for(vector::iterator it = sol.begin(); it != sol.end(); ++it) cout << *it << '\n'; return 0; }