import aocd import re def parse(data): for range_ in data.strip().split(','): yield range_.split('-') def num_invalid(low, high): low_int, high_int = int(low), int(high) for id in range(low_int, high_int+1): if re.match(r'^((.+)\2+)$', str(id)): yield int(id) def main(data): ranges = parse(data) return sum(sum(num_invalid(*r)) for r in ranges) if __name__ == '__main__': solution = main(aocd.get_data(day=2, year=2025)) print(solution) aocd.submit(solution, part='b', day=2, year=2025)