#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<string>strs(n);
    /*c++里有个string类型,
    就是字符串,这与c语言不一样,
    这里的strs(n)好比char str[n][100001(足够大)]
    */
 vector<bitset<26>>has(n);
 /*这是个新的东西,c语言里没有的,这里是创了个小写字母的数组has
 这里has可以理解为二维的,就像has[n][26(0~25)]!!!
 补:这里的bitset可不是什么小写字母专用,这里单单就是一种记录多种类型的,像这里的
 就是定义了26种类型,这26种类型的初始值都为0;
 疑问:这26个只能是0~25吗?
 */
for(int i=0;i<n;i++){
    cin>>strs[i];
    for(char c:strs[i]){
        has[i].set(c-'a');
        /*
        这里的for(char c:strs[i])意思是没见过的:这里的意思
        =for(int j=0,char c=str[i][j];str[i][j]!='\0';j++);
        这里的set是个函数,可以理解为标记函数set(pol):将这个pol点赋值为1,
        表示来过,出现过
        */
    }
}
for(char c:strs[0]){
    bool ok=true;
    for(int i=1;i<n;i++){
            if(has[i][c-'a']!=1){
                ok=false;
                break;
            }
    }
    if(ok==true){
        cout<<c<<endl;/*
        看出来了,一个字母为密码,那是我前面想复杂了,我以为至少2个*/
        return 0;
    }
}
cout<<"NO"<<endl;

    }