Довірчі групи
У відділі кадрів Асоціації Солодких Монстрів (AСM) помітили, що продуктивність різних робочих груп у компанії не така гарна, як могла б бути. Вони взяли інтерв'ю у співробітників проблемних груп і виявили причину проблеми: довіру (або правильніше сказати її відсутність). Деякі співробітники не довіряють іншим членам групи, що зменшує їхню мотивацію та щастя. Відділ кадрів хоче розв'язати цю проблему, реорганізувавши групи так, щоб вони стали стабільними, тобто складались з людей, які довіряють один одному. Зі співробітниками було проведено бесіду, після чого було встановлено, кому безпосередньо довіряє кожен з них. Більше того, якщо співробітник A довіряє спіробітнику B, а співробітник B довіряє співробітнику C, то співробітник A буде довіряти C. Очевидно також, що кожен зі співробітників довіряє самому собі. У відділі кадрів хочуть створити найменшу кількість групп людей так, щоб зменшити витрати на адміністрування (вони і самі не хочуть важко працювати).
По заданій інформації Вам потрібно написати програму, яка знайде найменшу кількість стабільних груп, які можна створити.
Вхідні дані
Вхідін дані складаються з декількох тестів. Кожен тест починається з рядка, який містить два натуральних числа P та T (1 ≤ P ≤ 1000, 0 ≤ T ≤ 999000). Кожен з наступних P рядків містить ім'я однієї людини. Імена мають наступний формат: прізвище, кома, пропуск, перше ім'я (наприклад McBride, John або Smith, Peter). Прізвище та перше ім'я є рядками, які містять букви верхнього та нижнього регістру (без пропусків та знаків пунктуації), та які мають довжину не більше 10 символів. Повторів повних імен людей не існує. За іменами йде T блоків по 2 рядки, які являють собою довірчі відносини між людьми. Кожен рядок блоку містить ім'я людини у такому ж форматі, як було наведено вище. Кожен блок означає, що людина у першому рядку довіряє людині у другому рядку. Усі люди, яхі знаходяться у довірчих відносинах, перераховані у попередньому списку з P чоловік.
Вхідні дані завершуються тестом-"фантомом" 0 0, який опрацьовувати не потрібно.
Вихідні дані
Для кожного тесту вивести рядок, який містить найменшу кількість стабільних груп людей, які можна сформувати.