#include<bits/stdc++.h>
using namespace std;
int n,ans;
bool h[200010],h1[200010];
unsigned long long mode=200005,mode1=20005;
unsigned long long powe(unsigned long long s,int d){
unsigned long long c=1;
for(int i=1;i<=d;i++){
c=c*s;
}
return c;
}
int main(){
//freopen("P3370.in","r",stdin);
//freopen("P3370.out","w",stdout);
int n;
cin>>n;
while(n--){
string str;
cin>>str;
int ch;
unsigned long long s=0,s1=0;
for(int i=0;i<str.size();i++){
ch=str[i];
s=s+((unsigned long long)(powe(ch,i)))%mode;
s1=s1+((unsigned long long)(powe(ch,i)))%mode1;
}
s=s%mode;
s1=s1%mode1;
if(h[s]==1&&h1[s1]==0){
while(h[s]){
s++;
}
}
if(h[s]==0&&h1[s1]==1){
while(h1[s1]){
s1++;
}
}
h[s]=1;
h1[s1]=1;
//cout<<s<<" "<<s1<<endl;
}
for(int i=0;i<=200000;i++){
ans=ans+h[i];
if(h[i]){
cout<<i<<endl;
}
}
cout<<ans<<endl;
return 0;
}
开pow函数会因为精度不够而WA#1,6,9,10,11 使用自制函数会TLE#1,9,10,11