from lib import get_data data = get_data(__file__) def is_invalid(xs: str) -> bool: for seq_len in range(1, len(xs) // 2 + 1): if xs[:seq_len] == xs[seq_len:]: return True return False def is_invalid2(xs: str) -> bool: for seq_len in range(1, len(xs)): if len(xs) % seq_len != 0: continue for repeat in range(len(xs) // seq_len): i = seq_len * repeat if xs[:seq_len] != xs[i:i + seq_len]: break else: return True return False r1, r2 = 0, 0 for id_range in data.split(","): lo, up = list(map(int, id_range.split("-"))) for id in range(lo, up + 1): if is_invalid(str(id)): r1 += id if is_invalid2(str(id)): r2 += id print(r1) print(r2)