Управление членством
Питер — старший менеджер компании Agile Change Management (ACM) Inc., где каждый сотрудник состоит в одной или нескольких рабочих группах. Поскольку ACM — гибкая компания, состав рабочих групп часто меняется, и управление членством становится постоянной головной болью для Питера.
Питер обновляет информацию о членстве при каждом изменении. Например, следующая строка, составленная им, означает, что Кэрол и Элис являются членами Дизайн-группы:
design:carol,alice.
Имя перед двоеточием — это название группы, а имена после него — её члены.
Меньшая рабочая группа может быть частью более крупной. Таким образом, название группы может появляться как член другой группы, например:
development:alice,bob,design,eve.
Простое развертывание design выше дает следующую спецификацию членства, эквивалентную оригинальной:
development:alice,bob,carol,alice,eve.
Однако в этом случае alice встречается дважды. После удаления дубликата получаем более краткую спецификацию:
development:alice,bob,carol,eve.
Ваша задача — написать программу, которая, получив спецификации групп, определяет членов группы.
Обратите внимание, что спецификации Питера могут включать глубоко вложенные группы. Например, в следующем случае группа one содержит единственного члена дэйва:
one:another.another:yetanother.yetanother:dave.
Входные данные
Входные данные состоят из последовательности наборов данных, каждый из которых имеет следующий формат:
n group_1:member_{1,1},...,member_{1,m1}. ... group_i:member_{i,1},...,member_{i,mi}. ... group_n:member_{n,1},...,member_{n,mn}.
Первая строка содержит n — количество групп, это положительное целое число, не превышающее 100. Каждая из следующих n строк содержит информацию о членстве группы: group_i (1 ≤ i ≤ n) — это название i-й рабочей группы, за которым следует двоеточие (:), а затем список её m_i членов, разделённых запятой (,) и заканчивающихся точкой (.).
Названия групп уникальны. Каждое m_i (1 ≤ i ≤ n) находится в пределах от 1 до 10, включительно. Член является названием другой группы, если это одно из group_1, group_2, ..., или group_n. В противном случае это имя сотрудника.
Циклических (или рекурсивных) определений группы(групп) нет. Вы можете предположить, что m_i имена членов группы уникальны.
Каждое название группы или имя сотрудника — это непустая строка длиной от 1 до 15 символов, состоящая из строчных букв.
Конец ввода обозначается строкой, содержащей ноль.
Выходные данные
Для каждого набора данных выведите количество сотрудников, входящих в первую группу набора данных, то есть group_1, в отдельной строке. Вывод не должен содержать лишних символов.