import re example = """xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))""" input = open('input.txt').read() def process_instructions(text): mul_enabled = True total_sum = 0 pattern = re.compile(r"(mul\((\d+),(\d+)\))|do\(\)|don't\(\)") for match in pattern.finditer(text): if match.group(1): if mul_enabled: num1 = int(match.group(2)) num2 = int(match.group(3)) total_sum += num1 * num2 elif match.group(0) == 'do()': mul_enabled = True elif match.group(0) == "don't()": mul_enabled = False return total_sum print(process_instructions(input))