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