// AtCoder154 C

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <string.h>
#include <memory.h>
#include <malloc.h>
#include <stdlib.h>

struct node_t {
    char s[11];
    struct node_t* left;
    struct node_t* right;
};

struct node_t* mallocNode(char* adds) {
    struct node_t* add;

    add = (struct node_t*)malloc(sizeof(struct node_t));
    if (add == NULL) {
        return NULL;
    }

    add->left = NULL;
    add->right = NULL;
    strcpy(add->s, adds);

    return add;
}

int addNode(struct node_t* root, char* tmps) {
    struct node_t* node;
    if (root == NULL) {
        root = mallocNode(tmps);
        return 1;
    }

    node = root;
    while (1) {
        if (strcmp(tmps, node->s) < 0) {
            if (node->left == NULL) {
                node->left = mallocNode(tmps);
                return 1;
            }
            node = node->left;
        }
        else if (strcmp(tmps, node->s) > 0) {
            if (node->right == NULL) {
                node->right = mallocNode(tmps);
                return 1;
            }
            node = node->right;
        }
        else {
            return 0;
        }
    }

    return 0;
}

int main() {

    int n, i, j;
    int* a; // 動的メモリの先頭アドレス用のポインタ
    char tmp_s[11];
    int cnt = 0;
    struct node_t* root;
    root = NULL;

    scanf("%d", &n);

    scanf("%s", tmp_s);
    root = mallocNode(tmp_s);
    cnt++;

    for (i = 0; i < n-1; i++) {
        scanf("%s", tmp_s);
        cnt += addNode(root, tmp_s);
    }
    printf("%d", cnt);
    return 0;
}