#include <cstdio>
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>


using namespace std;

int N, nr;

string s[32];

string cur;
vector <char> v[32];
vector <string> 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<string>::iterator it = sol.begin(); it != sol.end(); ++it){
        printf("%s\n", (*it).c_str());
    }

    return 0;
}