6 with open("14_input.txt") as f:
7 polymer_template = f.readline().strip()
11 pair, insert = line.strip().split(" -> ")
13 insertion_rules[pair] = insert
15 extended_template = []
17 expected_length = len(polymer_template)
20 for i in range(len(polymer_template) - 1):
22 pair = polymer_template[i:i+2]
23 extended_template += [
25 insertion_rules[pair],
28 polymer_template = "".join(
29 extended_template + [polymer_template[i + 1]]
31 extended_template = []
32 expected_length += expected_length - 1
34 assert len(polymer_template) == expected_length, "Length unexpected"
36 letter_count = collections.defaultdict(int)
37 for letter in polymer_template:
38 letter_count[letter] += 1
40 print(max(letter_count.values()) - min(letter_count.values()))