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