'''
Условие
<<<<<<< HEAD
Учительница задала Пете домашнее задание — в заданном тексте расставить 
ударения в словах, после чего поручила Васе проверить это домашнее задание. 
Вася очень плохо знаком с данной темой, поэтому он нашел словарь, в котором 
указано, как ставятся ударения в словах. К сожалению, в этом словаре 
присутствуют не все слова. Вася решил, что в словах, которых нет в словаре, 
он будет считать, что Петя поставил ударения правильно, если в этом слове 
Петей поставлено ровно одно ударение.

Оказалось, что в некоторых словах ударение может быть поставлено больше, чем 
одним способом. Вася решил, что в этом случае если то, как Петя поставил 
ударение, соответствует одному из приведенных в словаре вариантов, он будет 
засчитывать это как правильную расстановку ударения, а если не соответствует, 
то как ошибку.

Вам дан словарь, которым пользовался Вася и домашнее задание, сданное Петей. 
Ваша задача — определить количество ошибок, которое в этом задании насчитает 
Вася.

Вводится сначала число N — количество слов в словаре.

Далее идет N строк со словами из словаря. Каждое слово состоит не более чем из 
0 символов. Все слова состоят из маленьких и заглавных латинских букв. В каждом 
слове заглавная ровно одна буква — та, на которую попадает ударение. Слова в 
словаре расположены в алфавитном порядке. Если есть несколько возможностей 
расстановки ударения в одном и том же слове, то эти варианты в словаре идут в 
произвольном порядке.

Далее идет упражнение, выполненное Петей. Упражнение представляет собой строку 
екста, суммарным объемом не более 300000 символов. Строка состоит из слов, 
которые разделяются между собой ровно одним пробелом. Длина каждого слова не 
превышает 30 символов. Все слова состоят из маленьких и заглавных латинских 
букв (заглавными обозначены те буквы, над которыми Петя поставил ударение). 
Петя мог по ошибке в каком-то слове поставить более одного ударения или не 
поставить ударения вовсе.
Выведите количество ошибок в Петином тексте, которые найдет Вася.

Примечания к примерам тестов

1. В слове cannot, согласно словарю возможно два варианта расстановки ударения. 
Эти варианты в словаре могут быть перечислены в любом порядке (т.е. как сначала 
cAnnot, а потом cannOt, так и наоборот). Две ошибки, совершенные Петей — это 
слова be (ударение вообще не поставлено) и fouNd (ударение поставлено неверно). 
Слово thE отсутствует в словаре, но поскольку в нем Петя поставил ровно одно 
ударение, признается верным.

2. Неверно расставлены ударения во всех словах, кроме The (оно отсутствует в 
словаре, в нем поставлено ровно одно ударение). В остальных словах либо ударные 
все буквы (в слове PAGE), либо не поставлено ни одного ударения.


''' 
def check_w(word):
    b=0
    for i in range(len(word)):
        if word[i].isupper():
            b+=1
    return b
    
def check_2w(word1, word2):
    if word1.lower()==word2.lower():
        return True
    else:
        return False

lib=[]
err=0
for i in range(int(input())):
    lib.append(str(input()))
hw=input().split()
delta_hw1=[]
delta_hw2=[]
for i in range(len(hw)):
    for j in range(len(lib)):
        if check_2w(hw[i],lib[j]) == True:
            delta_hw1.append(hw[i])
            break
for i in range(len(hw)):
    if  hw[i] not in delta_hw1:
        delta_hw2.append(hw[i])

for i in range(len(delta_hw1)):
    if delta_hw1[i] not in lib:
        err+=1
        
for i in range(len(delta_hw2)):
    if check_w(delta_hw2[i]) != 1:
        err+=1

print(err)



'''
n = int(input())
accents = {}
for i in range(n):
    word = input()
    base_form = word.lower()
    if base_form not in accents:
        accents[base_form] = set()
    accents[base_form].add(word)

errors = 0
sent = input().split()
for word in sent:
    base_form = word.lower()
    if (base_form in accents and word not in accents[base_form]
            or len([l for l in word if l.isupper()]) != 1):
        errors += 1
print(errors)


'''
=======
Условие
В генеалогическом древе у каждого человека, кроме родоначальника, есть ровно 
один родитель.

Каждом элементу дерева сопоставляется целое неотрицательное число, называемое 
высотой. У родоначальника высота равна 0, у любого другого элемента высота на 1 
больше, чем у его родителя.

Вам дано генеалогическое древо, определите высоту всех его элементов.

Программа получает на вход число элементов в генеалогическом древе N. Далее 
следует N−1 строка, задающие родителя для каждого элемента древа, кроме 
родоначальника. Каждая строка имеет вид имя_потомка имя_родителя.

Программа должна вывести список всех элементов древа в лексикографическом 
порядке. После вывода имени каждого элемента необходимо вывести его высоту.

Примечание
Эта задача имеет решение сложности O(n), но вам достаточно написать решение 
сложности O(n2) (не считая сложности обращения к элементам словаря).
''' 
def height(man):
    if man not in p_tree:
        return 0
    else:
        return 1 + height(p_tree[man])
 
p_tree = {}
n = int(input())
for i in range(n - 1):
    child, parent = input().split()
    p_tree[child] = parent
 
heights = {}
for man in set(p_tree.keys()).union(set(p_tree.values())):
    heights[man] = height(man)
 
for key, value in sorted(heights.items()):
    print(key, value)

>>>>>>> 3816559275684fbd54a8a08e977d8a9ef94834ae
