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