Птицы, замеченные во все месяцы

тема: Связывание таблиц · уровень: продвинутый

Условие

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

Необходимо определить, сколько птиц из реестра были замечены хотя бы один раз в каждом из четырёх месяцев наблюдений: 1, 2, 3 и 4. Строки второй таблицы сопоставляются со строками первой таблицы по номеру кольца ring_id.

Для птицы из реестра пусть M — множество различных номеров месяцев, указанных в строках журнала с её номером кольца. Птица учитывается в ответе тогда и только тогда, когда M = {1, 2, 3, 4}. Наблюдения с номером кольца, отсутствующим в реестре, не учитываются. При совпадении нескольких строк журнала с одинаковыми номером кольца и месяцем наличие этого месяца всё равно считается только один раз.

Формат ввода

В первой строке даны два целых числа n и m — число строк в реестре птиц и число строк в журнале наблюдений.

Следующие n строк содержат два значения: ring_id и species. ring_id — номер кольца птицы, species — условное название её вида. Номера колец в реестре не повторяются.

Следующие m строк содержат два значения: ring_id и month — номер кольца замеченной птицы и номер месяца наблюдения. Один и тот же номер кольца может встречаться в журнале много раз. Номер кольца из журнала может отсутствовать в реестре.

Формат вывода

Выведите одно целое число — количество птиц из реестра, замеченных во всех четырёх месяцах.

Дробной части у ответа нет, выведите целое число.

Ограничения

1 ≤ n ≤ 4000.

0 ≤ m ≤ 4000.

n + m ≤ 4000.

Длина каждого ring_id составляет от 1 до 12 символов. Все символы ring_id — строчные латинские буквы и цифры.

Длина каждого species составляет от 1 до 20 символов. В названии вида нет пробелов.

1 ≤ month ≤ 4.

Журнал наблюдений может быть пустым. Если у птицы нет записей хотя бы для одного из месяцев, она не учитывается.

Решить задачу с автопроверкой на Python →

Куда дальше