#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
vector<string> allowed;
string banned,res;

map<char,vector<pii>> gen(vector<pii>& wordPos){
    map<char,vector<pii>>byChar;
    for(auto [i,j]:wordPos){
        if(allowed[i].size()>j){
            byChar[allowed[i][j]].push_back({i,j});
        }
    }
    return byChar;
}
bool isSubseq(string& s,string& t){
    int i=0;
    for(auto ch:t){
        while(i<s.size()&&s[i]!=ch){
            i++;
        }
        if(i==s.size())return false;
        i++;
    }
    return true;
}
int main()
{
    int n;
    cin>>n;
    allowed=vector<string>(n);
    for(auto &s:allowed)cin>>s;
    cin>>banned;
    vector<pii> wordPos(n);
    for(int i=0;i<n;i++)wordPos[i]={i,0};
    auto bc=gen(wordPos);
    for(char c:banned){
        for(char k='a';k<='z';k++){
            if(c!=k){
                while(!bc[k].empty()){
                    auto [i,j]=bc[k].back();bc[k].pop_back();
                    while(allowed[i].size()>j&&allowed[i][j]!=c){
                        res+=allowed[i][j];
                        j++;
                    }
                    if(allowed[i].size()>j){
                        bc[allowed[i][j]].push_back({i,j});
                    }
                }
            }
        }
        if(!bc[c].empty()){
            res+=c;
            for(auto& [i,j]:bc[c]){
                j++;
            }
            bc=gen(bc[c]);
        }
    }
    if(isSubseq(res,banned)){
        cout<<"NO";
    }else{
        cout<<"YES\n";
        cout<<res;
    }
    return 0;
}