Problem:
Score : 300 points

Problem Statement

You drew lottery N times. In the i-th draw, you got an item of the kind represented by a string S_i.

How many kinds of items did you get?

Constraints

1 \leq N \leq 2\times 10^5

S_i consists of lowercase English letters and has a length between 1 and 10 (inclusive).

Input

Input is given from Standard Input in the following format:

N
S_1
:
S_N

Output

Print the number of kinds of items you got.

Sample Input 1

3
apple
orange
apple

Sample Output 1

2

You got two kinds of items: apple and orange.

Sample Input 2

5
grape
grape
grape
grape
grape

Sample Output 2

1

Sample Input 3

4
aaaa
a
aaa
aa

Sample Output 3

4

Solution in Pascal (FPC 3.0.4) (judge verdict: Time Limit Exceeded)

var
	arr : array[0..2068,1..2000] of string;
    s:string;
    i,j,n,temp,cnt:longint;
function hash(s:string):integer;
var
	i:integer;
    sum:longint;
begin
	sum:=0;
	for i:=1 to length(s) do begin
    	sum:=(ord(s[i])*i)+sum;
	end;
    hash:=(sum mod 2069);
end;
begin
	cnt:=0;
	for i:=0 to 2068 do 
    	for j:=1 to 2000 do arr[i][j]:='.';
	readln(n);
    for i:=1 to n do begin
    	readln(s);
        cnt:=cnt+1;
        j:=1;
        temp:=hash(s);
        while (arr[temp][j]<>'.') and (arr[temp][j]<>s) do begin
        	j:=j+1;
        end;
        if (arr[temp][j]=s) then begin
        	cnt:=cnt-1;
        	continue;
        end;
        if arr[temp][j]<>'.' then continue
        else arr[temp][j]:=s;
    end;
	writeln(cnt);
end.