#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; }