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++ (GCC 9.2.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

int main(void){
    long int n = 0; 
    char s[200001][11]; 
    long int cnt = 0;

    scanf("%d", &n);
    scanf("%s", s[0]);
//    printf("s = %s\n", s);

    for(long int i = 1; i < n; i++){
        char temp[11];
        scanf("%s", temp);
//        printf("temp = %s\n", temp);

        for(long int j = 0; j <= cnt; j++){
//            printf("temp = %s s = %s cnt = %d strlen() = %d\n", temp, s[j], j, strlen(temp));
            if(strcmp(s[j], temp) == 0){
//                printf("==\n");
                break;
            }else{
//                printf("=!\n");
                cnt++;
                strcpy(s[cnt], temp);
                break;
            }
            // for(int k = 0; k < strlen(temp); k++){
            //     if(temp[k] != s[j][k]){
            //         cnt++;
            //         strcpy(s[cnt], temp);
            //         break;
            //     }
            //     if((k + 1) == strlen(temp) ){
            //         break;
            //     }
            // }
        }

    }
    cnt++;
    printf("%d\n", cnt);

    return 0;

}