#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; #define all(x) begin(x),end(x) #define rep(i,a,b) for(int i=(a);i<(b);++i) #define sz(x) int(x.size()) int main() { cin.tie(NULL); cin.sync_with_stdio(false); int n; cin >> n; vector<string> s(n); for(auto& i : s) cin >> i; vi a(n); vvi wh(128); for(int i=0;i<n;++i) wh[s[i][0]].push_back(i); string t; cin >> t; string ans; auto upd = [&](char c) { ans+=c; auto v = wh[c]; wh[c].clear(); for(auto i : v) { a[i]++; if(a[i]!=sz(s[i])) { wh[s[i][a[i]]].push_back(i); } } }; for(int i=0;i<t.size();++i) { while(true) { bool fnd=0; for(int j='a';j<='z';++j) { if(j!=t[i] and sz(wh[j])) { fnd=1; upd(j); } } if(!fnd) break; } if(i+1!=sz(t)) upd(t[i]); } for(int i=0;i<n;++i) { if(a[i]!=sz(s[i])) { cout << "NO\n"; exit(0); } } cout << "YES\n"; cout << ans << '\n'; }