7 polymer_pairs = collections.defaultdict(int)
9 letter_count = collections.defaultdict(int)
11 with open("14_input.txt") as f:
12 polymer_template = f.readline().strip()
16 pair, insert = line.strip().split(" -> ")
17 insertion_rules[pair] = insert
19 for i in range(len(polymer_template) - 1):
20 pair = str(polymer_template[i:i+2])
21 polymer_pairs[str(polymer_template[i:i+2])] += 1
26 new_polymer_pairs = collections.defaultdict(int)
27 for pair, n in polymer_pairs.items():
28 insert = insertion_rules[pair]
30 new_polymer_pairs[f"{pair[0]}{insert}"] += n
31 new_polymer_pairs[f"{insert}{pair[0]}"] += n
32 letter_count[insert] += n
34 polymer_pairs = new_polymer_pairs
37 print(max(letter_count.values()) - min(letter_count.values()))