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 Fortran (GNU Fortran 9.2.1) (judge verdict: Runtime Error)

   program abc164c
      implicit none
      integer::n
      character(10),allocatable::s(:)
      integer::i,count

         read *, n
         allocate(s(n))
         do i=1,n
            read *,s(i)
         end do

         call sort_quick(1,n,n,s)

         count=1
         do i=1,n-1
            if (s(i)/=s(i+1)) count=count+1
         end do

         print *,count
         stop

   contains
      recursive subroutine sort_quick(left,right,n,array)
       ! split two group with the medium element as the standard, and sort the array at each section
       ! if want to sort the array of strings, change 'double precision' variables to 'character' variables
         implicit none
         integer,intent(in)::n,left,right
         character(10),intent(inout)::array(1:n)
         integer::i,j
         character(10)::s,w

            if (left.ge.right) return

           !第一要素を一時的に軸とし、大小のグループへ分ける
            s=array(left)
            i=left
            j=right+1

            do
               i=i+1
               do while (s.gt.array(i))
                  i=i+1
               end do

               j=j-1
               do while (s.lt.array(j))
                  j=j-1
               end do

               if (i.ge.j) exit
              !スワップ
               w=array(i)
               array(i)=array(j)
               array(j)=w
            end do

           !軸を正しい位置に入れる
            array(left)=array(j)
            array(j)=s

            call sort_quick(left,  j-1,n,array) !左部分再帰
            call sort_quick( j+1,right,n,array) !右部分再帰

            return
      end subroutine sort_quick

   end program abc164c