import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.HashSet;

public class Main {
    public static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    }

    public static String next() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    }

} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.io.StreamTokenizer; StreamTokenizer java.io import java.util.HashSet; HashSet java.util public class Main {
    public static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    }

    public static String next() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    }

} Main public static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); in new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))) public static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    } nextInt {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    } try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } IOException e {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            in.nextToken();
        } in.nextToken() in.nextToken in return (int) in.nval; (int) in.nval in in.nval public static String next() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    } next {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    } try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } IOException e {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            in.nextToken();
        } in.nextToken() in.nextToken in return in.sval; in.sval in in.sval public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    } main {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    } HashSet<String> set = new HashSet<String>(); set new HashSet<String>() int n = nextInt(); n nextInt() nextInt while (n-- > 0) {
            set.add(next());
        } n-- > 0 n-- n 0 {
            set.add(next());
        } set.add(next()) set.add set next() next System.out.println(set.size()) System.out.println System.out System System.out set.size() set.size set String[] args args public class Main {
    public static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    }

    public static String next() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    }

} public class Main {
    public static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    }

    public static String next() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    }

} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.HashSet;

public class Main {
    public static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static int nextInt() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (int) in.nval;
    }

    public static String next() {
        try {
            in.nextToken();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return in.sval;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSet<String> set = new HashSet<String>();
        int n = nextInt();
        while (n-- > 0) {
            set.add(next());
        }
        System.out.println(set.size());
    }

}
