with open("input", "r") as fp: rangestrs = fp.read().split(",") ranges = [] for rangestr in rangestrs: a, b = rangestr.split("-") a_int, b_int = int(a), int(b) ranges.append((a, b)) assert a_int < b_int, f"Range invalid: {a} is not smaller than {b}" illegal_counter = 0 illegal_sum = 0 for a, b in ranges: a_int, b_int = int(a), int(b) for num in range(a_int, b_int + 1): num_str = str(num) if len(num_str) % 2 == 0 and num_str[len(num_str) // 2:] == num_str[:len(num_str) // 2]: illegal_counter += 1 illegal_sum += num print(illegal_counter, illegal_sum)