思想就是把设置一个进制把字符串转化成一个数,进制和取模要互质。
// 单哈希
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define MAXN 10010
#define M 212370440130137957ll
using namespace std;
typedef unsigned long long ull;
int n,res=1;
ull base=131,prime=233317,a[MAXN];
char s[MAXN];
ull hashe(char *s){
int len=strlen(s);
ull res=0;
for(int i=0;i<len;i++)
res=(res*base+(ull)s[i])%M+prime;
return res;
}
int main(){
#ifdef WINE
freopen("data.in","r",stdin);
#endif
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf(" %s ",s);
a[i]=hashe(s);
}
sort(a+1,a+n+1);
for(int i=1;i<n;i++)
if(a[i]!=a[i+1])res++;
printf("%d\n",res);
return 0;
}