def middle_page_if_update_correct(update: list[str], rules: list[tuple[str, str]]) -> int: for idx, page in enumerate(update): for previous_page in (update[previous_idx] for previous_idx in range(idx)): if (page, previous_page) in rules: return 0 return int(update[len(update) // 2]) rules = [] updates = [] reading_updates = False with open("input") as f: for line in f.readlines(): if reading_updates: updates.append(line.strip().split(",")) elif line == "\n": reading_updates = True else: rules.append(tuple(line.strip().split("|"))) result = 0 for update in updates: result += middle_page_if_update_correct(update, rules) print(result)