# (пересечение двух множеств фамилий даст множество фамилий тех учеников, которые изучают как минимум эти два языка; если взять пересечения для всех пар множеств и объединить их в одно, то получится множество фамилий всех учеников, изучающих как минимум два языка; если из полученного множества убрать фамилии учеников, изучающих все три языка, то останутся только фамилии тех, кто изучает ровно два)
two_lang_learners = (
(eng_learners & fra_learners |
eng_learners & ger_learners |
fra_learners & ger_learners) - all_learners
)
print(len(two_lang_learners) if two_lang_learners else 'NO')
Answers & Comments
m = int(input())
n = int(input())
k = int(input())
# множества фамилий учеников для каждого из языков
eng_learners = set(input() for _ in range(m))
fra_learners = set(input() for _ in range(n))
ger_learners = set(input() for _ in range(k))
# фамилии учеников, изучающих все три языка
all_learners = eng_learners & fra_learners & ger_learners
# фамилии учеников, изучающих ровно два языка
# (пересечение двух множеств фамилий даст множество фамилий тех учеников, которые изучают как минимум эти два языка; если взять пересечения для всех пар множеств и объединить их в одно, то получится множество фамилий всех учеников, изучающих как минимум два языка; если из полученного множества убрать фамилии учеников, изучающих все три языка, то останутся только фамилии тех, кто изучает ровно два)
two_lang_learners = (
(eng_learners & fra_learners |
eng_learners & ger_learners |
fra_learners & ger_learners) - all_learners
)
print(len(two_lang_learners) if two_lang_learners else 'NO')