#!/usr/bin/env python3 from collections import defaultdict lines = (x.strip() for x in open("input.txt")) result = 0 tickets = defaultdict(int, {i: 1 for i in range(0)}) for idx, line in enumerate(lines): tickets[idx] += 1 winnings = set(int(x.strip()) for x in line[line.find(":")+1:line.find("|")].split(" ") if len(x)) you_have = set(int(x.strip()) for x in line[line.find("|")+1:].split(" ") if len(x)) num_overlap = len(you_have.intersection(winnings)) for i in range(idx+1, idx+1+num_overlap): tickets[i] += tickets[idx] print(sum(tickets.values()))