from functools import reduce with open('input') as f: data = [line.strip().split() for line in f.read().split('\n\n')] def parse_data(data): groups = [] for line in data: group = [] for answers in line: group.append(set(answers)) groups.append(group) return groups def solve_a(groups): union = lambda a, b: a | b count = lambda g: len(reduce(union, g)) return sum(map(count, groups)) def solve_b(data): intersection = lambda a, b: a & b count = lambda g: len(reduce(intersection, g)) return sum(map(count, groups)) groups = parse_data(data) print(solve_a(groups)) print(solve_b(groups))