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 C (Clang 10.0.0) (judge verdict: Accepted)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct uuu{
    char w[12];
};

int cmp(const void *p, const void *q)
{
    int d = ((struct uuu *)p)->w[0] - ((struct uuu *)q)->w[0];
    int j=0;
    while(d==0){
        j++;
        d = ((struct uuu *)p)->w[j] - ((struct uuu *)q)->w[j];
        if(j==11)
            break;
    }
    return d;
}

int main()
{
    int s;
    struct uuu a[200001];
    scanf("%d", &s);


    int kinds=1;



    for (int i = 0; i < s; i++)// 全て読み込む
    {
        scanf("%s", a[i].w);
    }

    qsort(a, s , sizeof(struct uuu), cmp);//並び替え

    for (int i = 1; i < s; i++) // 全て読み込む
    {
        if (strcmp(a[i].w, a[i-1].w) !=0)
            kinds++;
    }
    printf("%d", kinds);
    printf("\n");
}