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: Runtime Error)

#include<stdio.h>

int main(void){
  int n = 0;
  scanf("%d", &n);
  int i, j;

  /* 文字列の数 */
  int num = n;

  /* 文字列 */
  char moji[n][10], tmp[10];

  /* 3つの文字列を入力 */
  //printf("\n◆3つの文字列（半角英数字）を入力してください\n");
  for (i=0;i<num;i++) {
    //printf("%dつめの文字列 = ", i+1);
    scanf("%s", moji[i]);
  }

  for(i=1;i<num;i++){
    for(j=1;j<num;j++){
      if(strcmp(moji[j-1], moji[j])>0){
        strcpy(tmp, moji[j-1]);
        strcpy(moji[j-1], moji[j]);
        strcpy(moji[j], tmp);
      }
    }
  }

  
  char before[10];
  int count = 0;
  for(i=0;i<num;i++){
    if(strcmp(before, moji[i])){
      count = count + 1;
    }
    strcpy(before, moji[i]);
  }
  printf("%d", count);
  return 0;
}