from collections import deque from lib import Grid2D from lib import get_data data = get_data(__file__) g = Grid2D(data) starts = g.find("0") p1, p2 = 0, 0 for start in starts: n = 0 vertex = ((start,), start) visited = set() queue = deque([vertex]) nines = set() while queue: path, pos = queue.popleft() if (path, pos) in visited: continue visited.add((path, pos)) if g[pos] == "9": n += 1 nines.add(pos) continue for nb in g.neighbors_ort(pos): if int(g[pos]) + 1 == int(g[nb]): npath = tuple(list(path) + [nb]) queue.append((npath, nb)) p1 += len(nines) p2 += n print(p1) print(p2)