#include <algorithm>
#include <iostream>
#include <set>
using namespace std;

set<int> in[256],out[256];
char str[200'000],vis[256];

void walk(int i){
	vis[i]=0;
	
}

int main(){
	int N;
	cin>>N;
	while(N--){
		cin>>str;
		for(int i=0;str[i];i++){
			vis[str[i]]=1;
			if(i){
				in[str[i]].insert(str[i-1]);
				out[str[i-1]].insert(str[i]);
			}
		}
	}
	//fill(str,str+200'000,0);
	for(int i='a';i<='z';i++)if(vis[i])
		if(in[i].size()>1 || out[i].size()>1) {
			cout<<"NO\n";
			return 0;
		}
	int c=0;
	for(int i='a',j;i<='z';i++)if(vis[i] && in[i].size()==0)
		{
			j=i;
			str[c++]=j;
			while(out[j].size()){
				j=*out[j].begin();
				str[c++]=j;
			}
		}
	str[c]=0;
	cout<<str<<endl;
	return 0;
}