import re from output import ints def solve(data): p1 = set() p2 = set() R = re.compile(r"^(\w+)\1+$") for line in data.split(","): a, b = ints(line) for n in range(a, b + 1): s = str(n) ls = len(s) for seq in re.findall(R, s): sqrts = [i for i in range(1, ls + 1) if ls % i == 0] for t in sqrts: if "".join([seq] * t) == s: if t == 2: p1.add(n) p2.add(n) return sum(p1), sum(p2) if __name__ == "__main__": with open("./input/02.txt", "r") as f: inp = f.read().strip() p1, p2 = solve(inp) print(p1) print(p2) assert p1 == 38437576669 assert p2 == 49046150754