#include <bits/stdc++.h> using namespace std; int n, nr_on; string s[200005]; int ptr[200005]; string avoid; int p_avoid; queue<int> q[105]; string ans; void upd(int lit) { ans.push_back((char)(lit + 'a')); vector<pair<int, int>> to_add; while(!q[lit].empty()) { int id = q[lit].front(); q[lit].pop(); ptr[id]++; if(ptr[id] == (int)s[id].size()) nr_on --; else to_add.push_back({id, s[id][ptr[id]] - 'a'}); } for(auto it : to_add) q[it.second].push(it.first); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>s[i]; ptr[i] = 0; nr_on ++; q[s[i][0] - 'a'].push(i); } cin>>avoid; int p_avoid = 0; while(nr_on && p_avoid < (int)avoid.size()) { bool ok = false; for(int lit=0; lit<='z'-'a'; lit++) if(!q[lit].empty() && lit != avoid[p_avoid] - 'a') { upd(lit); ok = true; } if(!ok) { upd(avoid[p_avoid] - 'a'); p_avoid ++; } } if(p_avoid < (int)avoid.size()) { cout<<"YES\n"; cout<<ans; } else cout<<"NO"; return 0; }