#include <bits/stdc++.h>
using namespace std;
bool multicases_=false;
#define int long long
string ans;
map<char,vector<char>>adj;
bool cycle=false;
map<char,int>vis;
void dfs(char node){
vis[node]=1;
//dbg:
// cerr<<node<<'\n';
for(auto&child:adj[node]){
if(vis[child]==0){
dfs(child);
} else if(vis[child]==1){
cycle=true;
return;
}
}
vis[node]=2;
ans+=node;
}
void solve(int tc){
// //dbg:
// cerr<<"at the test case no."<<tc<<" : \n";
int n;cin>>n;//input
string s;
for(int i= 0 ;i <n ; i++){
cin>>s;
string tmp="";
tmp+=s[0];
for(int i = 1; i < (int)s.size(); i++){
if(s[i]!=s[i-1]){
tmp+=s[i];
}
}
s=tmp;
for(int i = 1 ;i < (int)s.size(); i++){
adj[s[i-1]].push_back(s[i]);
//dbg <<<<<<<<<<<<<<<<<<<<<<<
// cerr<<s[i-1]<<" > "<<s[i]<<" , ";
}
}
for(auto&[node,children]:adj){
if(!vis[node]){
dfs(node);
}
if(cycle) break;
}
if(!cycle){
reverse(ans.begin(),ans.end());///////////////fix
char c;
for(int i = 0 ;i <26 ;i++){
c='a'+i;
if(!vis[c]) ans+=c;
}
}
if(cycle) cout<<"NAO";
else cout<<"SIM\n"<<ans;
// //dbg:
// for(auto&[node,children]:adj){
// cerr<<node<<endl;
// for(auto&child:children) cerr<<child<<' ';
// }
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
//pre computations:
int tc=1;
if(multicases_)cin>>tc;
int total_tcs=tc;
while(tc--){
solve(total_tcs-tc);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIG11bHRpY2FzZXNfPWZhbHNlOwojZGVmaW5lIGludCBsb25nIGxvbmcKCnN0cmluZyBhbnM7CgptYXA8Y2hhcix2ZWN0b3I8Y2hhcj4+YWRqOwpib29sIGN5Y2xlPWZhbHNlOwptYXA8Y2hhcixpbnQ+dmlzOwoKdm9pZCBkZnMoY2hhciBub2RlKXsKCQoJdmlzW25vZGVdPTE7CgkKCS8vZGJnOgoJLy8gY2Vycjw8bm9kZTw8J1xuJzsKCQoJZm9yKGF1dG8mY2hpbGQ6YWRqW25vZGVdKXsKCQlpZih2aXNbY2hpbGRdPT0wKXsKCQkJZGZzKGNoaWxkKTsKCQl9IGVsc2UgaWYodmlzW2NoaWxkXT09MSl7CgkJCWN5Y2xlPXRydWU7CgkJCXJldHVybjsKCQl9Cgl9CgkKCQoJdmlzW25vZGVdPTI7CglhbnMrPW5vZGU7Cn0KCnZvaWQgc29sdmUoaW50IHRjKXsKCS8vIC8vZGJnOgoJIC8vIGNlcnI8PCJhdCB0aGUgdGVzdCBjYXNlIG5vLiI8PHRjPDwiIDogXG4iOwoJCgkKCWludCBuO2Npbj4+bjsvL2lucHV0CglzdHJpbmcgczsKCWZvcihpbnQgaT0gMCA7aSA8biA7IGkrKyl7CgkJY2luPj5zOwoJCQoJCXN0cmluZyB0bXA9IiI7CgkJdG1wKz1zWzBdOwoJCWZvcihpbnQgaSA9IDE7IGkgPCAoaW50KXMuc2l6ZSgpOyBpKyspewoJCQlpZihzW2ldIT1zW2ktMV0pewoJCQkJdG1wKz1zW2ldOwoJCQl9CgkJfQoJCQoJCXM9dG1wOwoJCQoJCWZvcihpbnQgaSA9IDEgO2kgPCAoaW50KXMuc2l6ZSgpOyBpKyspewoJCQlhZGpbc1tpLTFdXS5wdXNoX2JhY2soc1tpXSk7CgkJCQoJCQkvL2RiZyA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAoJCQkvLyBjZXJyPDxzW2ktMV08PCIgPiAiPDxzW2ldPDwiICwgIjsKCQkJCgkJfQoJCQoJfQoJCglmb3IoYXV0byZbbm9kZSxjaGlsZHJlbl06YWRqKXsKCQlpZighdmlzW25vZGVdKXsKCQkJZGZzKG5vZGUpOwoJCX0KCQlpZihjeWNsZSkgYnJlYWs7Cgl9CgkKCWlmKCFjeWNsZSl7CgkJCgkJcmV2ZXJzZShhbnMuYmVnaW4oKSxhbnMuZW5kKCkpOy8vLy8vLy8vLy8vLy8vL2ZpeAoJCQoJCWNoYXIgYzsKCQlmb3IoaW50IGkgPSAwIDtpIDwyNiA7aSsrKXsKCQkJYz0nYScraTsKCQkJaWYoIXZpc1tjXSkgYW5zKz1jOwoJCX0KCX0KCQoJaWYoY3ljbGUpIGNvdXQ8PCJOQU8iOwoJZWxzZSBjb3V0PDwiU0lNXG4iPDxhbnM7CgkKCQoJLy8gLy9kYmc6CgkvLyBmb3IoYXV0byZbbm9kZSxjaGlsZHJlbl06YWRqKXsKCQkvLyBjZXJyPDxub2RlPDxlbmRsOwoJCS8vIGZvcihhdXRvJmNoaWxkOmNoaWxkcmVuKSBjZXJyPDxjaGlsZDw8JyAnOwoJLy8gfQoJCgkKfQoKc2lnbmVkIG1haW4oKXsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7CgkKCS8vcHJlIGNvbXB1dGF0aW9uczoKCQoJCglpbnQgdGM9MTsKCWlmKG11bHRpY2FzZXNfKWNpbj4+dGM7CglpbnQgdG90YWxfdGNzPXRjOwoJd2hpbGUodGMtLSl7CgkJc29sdmUodG90YWxfdGNzLXRjKTsKCX0KCXJldHVybiAwOwp9