""" Count number of paths through caves """ from collections import defaultdict def walk_from_node(current_node, path_taken_so_far): possible_paths = [] for node in caves[current_node]: if node == "end": possible_paths.append(path_taken_so_far + ["end"]) elif node == node.lower() and node in path_taken_so_far: pass else: possible_paths += walk_from_node(node, path_taken_so_far + [current_node]) return possible_paths caves = defaultdict(set) with open("12_input.txt") as f: for line in f: node_a, node_b = line.strip().split("-") caves[node_a].add(node_b) caves[node_b].add(node_a) walked_paths = walk_from_node("start", []) print(len(walked_paths)) filtered_walked_paths = [path for path in walked_paths if path[-1] == "end"] print(len(filtered_walked_paths))