直接上板子
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#define LL long long
#define MOD1 1000000007
#define MOD2 1000000009
#define seed1 163
#define seed2 131
using namespace std;
int n;
struct OI{
LL h1,h2;
}H[10009];//开LL,用结构体!
bool cmp(OI x,OI y)
{return x.h1<y.h1;}
LL hah(string x,int p)
{
int len=x.length();
LL Hash=0;
if(p==1)
{
for(int i=0;i<len;i++)
Hash=(Hash*seed1+x[i]-'a')%MOD1;
return Hash;
}
if(p==2)
{
for(int i=0;i<len;i++)
Hash=(Hash*seed2+x[i]-'a')%MOD2;
return Hash;
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
string a;
cin>>a;
H[i].h1=hah(a,1);
H[i].h2=hah(a,2);
}
sort(H+1,H+n+1,cmp);
int ans=0;
for(int i=1;i<=n;i++)
{
if(H[i].h1!=H[i-1].h1||H[i].h2!=H[i-1].h2) ans++;
}
printf("%d",ans);
return 0;
}