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