import java.util.*;
public class Main {	
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		int a=sc.nextInt();
		int c[]=new int[26];
		Node nod[]=new Node[26];
		for(int n=0;n<26;n++){
			Node node=new Node(n);
			nod[n]=node;
		}
		boolean is=true;
		for(int n=0;n<a;n++){
			String s=sc.next();
			if(!is)continue;
			c[s.charAt(0)-'a']=1;
			for(int m=1;m<s.length();m++){
				int l=s.charAt(m-1)-'a';
				int r=s.charAt(m)-'a';
				c[r]=1;
				if(nod[r].head==-1){
					nod[r].head=l;
				}
				else if(nod[r].head!=l){
					is=false;
				}
				
				if(nod[l].next==-1){
					nod[l].next=r;
				}
				else if(nod[l].next!=r){
					is=false;
				}
				
				if(nod[l].next==nod[l].head&&nod[r].head==nod[r].next){
					is=false;
				}
				
			}
			
		}
		
		if(is){
			int sum=0;
			String ss="";
			for(int n=0;n<26;n++){
				if(c[n]==1)sum++;
			}
			
			while(sum!=0){
				
				
				int t=-1;
				for(int n=0;n<26;n++){
					if(c[n]==1&&nod[n].head==-1){
						char ch=(char) (nod[n].t+'a');
						ss+=String.valueOf(ch);
						t=nod[n].next;
						sum--;
						c[n]=0;
						break;
					}
					if(n==25){
						is=false;
					}
				}
				for(;;){
					if(t==-1)break;
					char ch=(char)(nod[t].t+'a');
					ss+=String.valueOf(ch);
					c[t]=0;
					t=nod[t].next;
					sum--;				
				}
				if(!is){
					break;
				}
			}
			if(is){
				System.out.println(ss);
			}
			else{
				System.out.println("NO");
			}
			
		}
		else{
			System.out.println("NO");
		}
		
	}
	
}

class Node{
	int head=-1,next=-1,t;
	Node(int t){
		this.t=t;
	}
}


