```cpp
using namespace std;
#define ull unsigned long long
const int MAXN=10010;
const ull base=10007;
char getin[MAXN][MAXN];
ull hash[MAXN];
ull bit[MAXN];
void get_hash(int a,int l){
for(int b=1;b<=l;b++){
if(getin[a][b]>='0'&&getin[a][b]<='9')hash[a]+=(getin[a][b]-'0'+1)*bit[b];
else{
if(getin[a][b]>='a'&&getin[a][b]<='z')hash[a]+=(getin[a][b]-'a'+11)*bit[b];
else if(getin[a][b]>='A'&&getin[a][b]<='Z')hash[a]+=(getin[a][b]-'A'+37)*bit[b];
}
}
}
int search(int a){
for(int b=a-1;b>=1;b--){
if(hash[a]==hash[b]){
return 0;
}
}
return 1;
}
int main(){
bit[0]=1;
for(int a=1;a<=MAXN;a++)bit[a]=bit[a-1]*base;
int n,total=0;
int a,b;
cin>>n;
char ch;
for(a=1;a<=n;a++){
cin>>getin[a];
get_hash(a,b);
total+=search(a);
}
cout<<total;
return 0;
}
```
by meisr @ 2018-06-08 13:50:58