from collections import Counter def solve(data): grids = [ (m.strip()[0], list(map(Counter, zip(*m.split())))) for m in data.split("\n\n") ] locks = [] keys = [] for kind, grid in grids: match kind: case "#": locks.append(tuple(str(g[kind] - 1) for g in grid)) case ".": keys.append(tuple(str(7 - g[kind] - 1) for g in grid)) p1 = sum( all(int(lock[i]) + int(k[i]) <= 5 for i in range(5)) for lock in locks for k in keys ) p2 = "God jul!" return p1, p2 if __name__ == "__main__": with open("./input/25.txt", "r") as f: inp = f.read().strip() p1, p2 = solve(inp) print(p1) print(p2)