from lib import get_data from functools import cache data = get_data(__file__) lines = data.splitlines() patterns = set(lines[0].split(", ")) @cache def valid(line): if line == "": return 1 r = 0 for j in range(1, len(line) + 1): sub = line[:j] if sub in patterns: r += valid(line[j:]) return r p1, p2 = 0, 0 lines = lines[2:] for line in lines: v = valid(line.strip()) if v > 0: p1 += 1 p2 += v print(p1) print(p2)