commit 664fab995228eaaa0789807419567c09a15fa2bb
parent 1670612032ab59f7fba57b272b1c4902314af2c8
Author: Jack Sangdahl <jack@pngu.org>
Date: Wed, 10 Dec 2025 12:19:31 +0100
Day 10 2025
Diffstat:
| A | 2025/10_2025.py | | | 60 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | data/10_2025.txt | | | 189 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 249 insertions(+), 0 deletions(-)
diff --git a/2025/10_2025.py b/2025/10_2025.py
@@ -0,0 +1,60 @@
+import z3
+
+input = open("data/10_2025.txt")
+data = input.read().splitlines()
+p1, p2 = 0, 0
+
+for i in data:
+ words = i.split()
+ goal = words[0]
+ goal = goal[1:-1]
+ goal_n = 0
+ for j, k in enumerate(goal):
+ if k == "#":
+ goal_n += 2**j
+
+ buttons = words[1:-1]
+ b, ns = [], []
+
+ for j in buttons:
+ n = [int(x) for x in j[1:-1].split(",")]
+ button_n = sum(2**x for x in n)
+ b.append(button_n)
+ ns.append(n)
+
+ score = len(buttons)
+ for j in range(2 ** len(buttons)):
+ a_n, a_score = 0, 0
+ for k in range(len(buttons)):
+ if ((j >> k) % 2) == 1:
+ a_n ^= b[k]
+ a_score += 1
+ if a_n == goal_n:
+ score = min(score, a_score)
+ p1 += score
+ joltage = words[-1]
+ joltage_ns = [int(x) for x in joltage[1:-1].split(",")]
+ v = []
+ for j in range(len(buttons)):
+ v.append(z3.Int(f"b{j}"))
+ eq = []
+ for j in range(len(joltage_ns)):
+ terms = []
+ for k in range(len(buttons)):
+ if j in ns[k]:
+ terms.append(v[k])
+ eq_n = sum(terms) == joltage_ns[j]
+ eq.append(eq_n)
+ o = z3.Optimize()
+ o.minimize(sum(v))
+ for j in eq:
+ o.add(j)
+ for j in v:
+ o.add(j >= 0)
+ assert o.check()
+ m = o.model()
+ for j in m.decls():
+ p2 += m[j].as_long()
+
+print(p1)
+print(p2)
diff --git a/data/10_2025.txt b/data/10_2025.txt
@@ -0,0 +1,189 @@
+[.#.###] (0,1,2) (0,2,4,5) (3,5) (2,4,5) (0,1,3,4) (0,2,4) (5) {21,18,30,14,34,40}
+[.##.##.#] (0,4,5,6) (1,3,6) (0,1,2,3,4,5,6) (0,3,6,7) (1,2,3,4,6,7) (1,2,4,5) {206,71,52,235,56,42,239,196}
+[..##] (2,3) (0,3) (1,2) (0,2) {37,13,45,31}
+[##......] (3) (0,3,4,5,7) (2,3,7) (0,2,5) (1,2,4,5,7) (4,6,7) (0,1,2,4,5,6) (0,2,3,4,6) (3,4,6) {29,11,38,45,45,33,27,54}
+[#.....##] (5,7) (3,6) (0,2,3,4,6,7) (2,4) (0,6,7) (1,3,6,7) (1,2,5,6,7) {17,27,16,43,6,30,64,64}
+[##.#.#.#] (0,3,4,5,6) (3,5,6,7) (0,2,7) (0,1,6,7) (1,2,3,4,6,7) (0,3,4,7) (0,1,2,4,5,6,7) (0,1,3,5,7) (0,1,2,4,5) (0,3) {80,74,41,62,60,59,56,88}
+[#.#.] (0,2) (2,3) (0,3) (1,3) (3) (1,2) {26,7,25,27}
+[#..#####..] (4,5,7,8,9) (1,5,6,7,8,9) (1,7,9) (5) (0,2,3,6) (4,5,7) (0,3) (0,1,3,4,5,6) (2,6,8) (4,5) (6,8) (1,2,4,5,6,7,8,9) {17,30,9,17,49,84,47,62,63,47}
+[.#..###...] (0,2,3,4,6,7,8) (0,3,5,6,7,8) (1,5,7) (0,1,3,5,6,7) (0,2,3,4,6,8) (1,2,3,4,5,6,8,9) (2,6,7) (0,1,3,4,8) (7) (0,1,2,4,7,8) {48,25,54,58,48,22,64,47,53,11}
+[##..] (0,1) (2,3) (0) (3) (1,2,3) (0,2) {11,7,27,33}
+[#.###.#..] (1,2,3,5,6,7,8) (0,2,4) (0,1,5,6,7,8) (0,1,2,3,4,6,7) (1,7) (0,3,5,7,8) (5,6,8) (2,3,4,5,6,7,8) (1,4,5,6,7) (0,1,3,4,6,7,8) {43,57,26,38,57,54,73,73,60}
+[##........] (4,5,6,7,9) (0,1,2,3,4,5,6,8,9) (0,2,3,6,7,9) (6,8) (0,4,5,8) (0,4,5,7) (1,8,9) (1,2,3,6,9) {42,226,215,215,36,36,222,32,37,238}
+[###..] (1,2,3) (4) (2,3) (0,1,3,4) (2,3,4) {14,14,5,19,24}
+[....###] (0,2,3,4,5) (1,2) (1,2,4,5,6) (3,5) (0,2,4,6) (0,2,3) (0,2,3,6) (0,3) (1,3,4,6) {43,34,51,39,36,6,35}
+[##.##.#.] (1,6) (0,1,2,3,5,6) (0,2,3,5,6,7) (0,1,2,3,4,5,6) (0,2,3,4,5,6) (0,3,4,5,6,7) (0,2) (0,1,2,4,5,6) (3) {29,16,24,27,17,27,32,15}
+[.##..#] (1,3,4,5) (2) (0,3) (2,4) (0,1,3,4) (0,1,3,4,5) (0,3,4,5) (1,3,4) {42,29,4,49,51,23}
+[.##...#] (6) (0,3,4,5,6) (4,5) (0,2,6) (2,4,6) (0,2,4,5,6) (1,2,5) (0,1,3,4,6) (0,2,3) {50,6,40,23,30,24,56}
+[..#.###..#] (0,1,2,3,4,6,7) (0,6) (0,1,2) (0,3,4,9) (1,2,9) (0,1,2,6,7,8,9) (1,2,5,6,8) (5,6,8) (0,3,7,9) (0,1,3,5,6,7,8) (1,4) {63,88,62,23,29,38,70,29,51,35}
+[..###] (1) (0,2,4) (2,3) (0,3,4) (3,4) (1,4) (0,2,3) {34,23,29,34,51}
+[##.#.##] (2,4,5,6) (0,1,3,5,6) (0,1,2,4,5,6) (0,3) (0,1,2,3,4) {236,226,228,40,228,230,230}
+[.#..##] (0,1,2,3,4) (0,1,3) (0,1,3,4) (0,2,3) (0,1,3,5) {206,188,26,206,20,154}
+[.#..##] (0,2,3) (0,1,5) (4,5) (0,2,4,5) (1,5) (0,1,4) (0,1,3) (0,2,5) {51,17,43,12,36,63}
+[.#.#...] (4,6) (1,4) (3,5,6) (0) (0,1,2,3,6) (3,4) (0,2,3,5) (1,2,3,5) {42,32,29,49,24,22,40}
+[.#..#..##] (0,2,7,8) (0,1,2,3,4,6,7) (1,5) (0,1,2,4,5,6,7) (0,2,3,6,7,8) (0,1,5) (3,5) (2,4,6) (1,2,3,5,6,8) (1,7,8) {50,68,64,35,40,55,56,51,38}
+[.#.#.####] (0,1,2,3,4,5,6) (0,2,3,5) (0,1,2,4,5,6,7,8) (1,5,6) (0,1,2,4,5,6,7) (0,1,2,3,5,7,8) (0,1,2,3,4,7,8) (1,3,5,6,7) {39,68,39,49,22,63,46,36,22}
+[##..##] (0,4,5) (0,1,3,4,5) (2,4) (1,3,5) (2) (1,2,3,4) (1,2,4,5) (0,1,2,3) {33,61,226,48,55,43}
+[#.#..#.] (0,1,4) (0,1,3) (1,4) (0,2,5) (1,2,3,5,6) (0,3,4,5) (2) (0,3,4,6) (0,3,5) {209,34,172,61,47,201,27}
+[####.] (1,3,4) (1,2,3) (1,2) (0,3) (1,3) (4) (0,1,2,3) {23,83,45,75,29}
+[#.##..] (0,2,3) (0,2,3,4) (1,2,3,5) (0,3,4,5) (1,4) (4,5) {46,22,34,53,44,28}
+[#######..] (0,2,4) (0,1,3,4,5,7,8) (0,1,3,4,7,8) (0,1,2,3,6,7,8) (0,5) (1,2,3,4,5,7) (2,5,7,8) (0,2,3,5,6,7) (5,6) {200,166,63,169,170,189,30,186,176}
+[#.##.] (3) (1,4) (0,1,4) (0,2,3) (3,4) (1,2,4) (4) {26,34,15,51,64}
+[#.#.] (0,2) (0,1,3) (0,3) (2,3) (2) {200,8,17,204}
+[...#.....] (1,2,4,5,8) (1,4,5,8) (1,3,4,5,7) (0,4,5,6) (2,3,6) (0,2,4,5,6,7,8) (3,6) {15,19,36,196,34,34,209,14,29}
+[#...] (0,2,3) (0,1) (2,3) {25,7,36,36}
+[.##.#] (1,2,3) (2,3,4) (0,1,4) (1,4) (0,3,4) {31,176,17,33,189}
+[#..###.###] (0,2,4,7) (4,9) (1,2,5,6,7,9) (0,1,2,3,5,9) (0,1,3,6,7,9) (0,2,4,9) (0,1,2,3,4,6,7,9) (0,2,3,5,6,7,8,9) (2,3,7) (4,8,9) {93,48,84,63,59,31,52,68,16,90}
+[.###.###..] (0,1,2,4,5,6,7,9) (1,5) (3,4,7,9) (1,2,3,5,6,7,8,9) (0,4,7,9) (0,1,3,5,6,7,8) (0,1,3,6) (3,5,6,7) (0,3,4,6,7,9) (1,3,4,5,7,8,9) (0,1,2,4,5,6) (3,9) (0,4,6,7,8) {236,242,189,97,241,245,241,114,52,97}
+[..#..#.] (0,1,4,5,6) (1,3,4,6) (2,3) (0,1,2,5) (1,3) (0,1,2,4) (0,1,2,3,4,6) {58,87,70,66,52,25,37}
+[##..#] (0,1,2,3) (0,1,4) (0,2,3) {24,7,20,20,4}
+[#.###.#] (1,3,5,6) (0,1,3,4,5) (0,1,2,3,4) (0,2,3,4,6) (3,5) {19,18,13,32,19,19,11}
+[###....#] (1,2,3,4,6,7) (0,2) (1,2,3,4,5,6) (0,2,4,5,7) (0,1,6) (0,1,3,6) (0,1,2,3,6,7) (0,1,2,3,4,5,7) {67,71,60,54,53,36,56,47}
+[.#####.###] (0,2,3,5,6) (0,1,2,5,6) (0,2,5,8,9) (4,7) (2,9) (0,1,3,6,7,8) (1,3,5,6,8) (1,4,6,8,9) (2,6) (0,1,2,4,5,7,8,9) (5,8) {178,182,58,153,41,64,195,162,189,34}
+[.#...] (0) (1,3) (3) (2,3) (1,4) (0,4) (0,1,2,4) {46,56,28,39,59}
+[..#.#] (2,3,4) (1,4) (2,4) (0,1,3) (1,3,4) {19,29,21,25,31}
+[#..##] (1,3) (1,2) (0,2,3) (0,1) (0,3,4) (1,4) {37,225,7,201,37}
+[..####..#.] (0,1,7,8,9) (0,1,3,4,5,6,7,8) (3) (0,1,3,5,6,8) (0,4) (0,2,3,5,6,7,8) (0,8) (0,2,5,8,9) (0,1,2,3,7) (2,3) (1,4,5,7,8,9) (1,2,3,4,7,8) (0,3,4,5,6) {109,62,55,64,71,67,40,77,105,44}
+[#.#.#..#.#] (1,2,4,5,6) (1,2,3,5,6,7,8,9) (3,4,5,7) (0,1,2,4,5,6,7,9) (1,3,4,7,8,9) (0,2,4,7,9) (4,5,6,8,9) (0,2,3,4,5,7,8,9) (1,2,5,6) (0,1,2,3,4,5,7,8,9) {40,56,54,40,68,70,41,60,40,60}
+[#.#.] (0,3) (3) (0,1) (0,1,3) (0,2) {72,35,17,228}
+[....#] (1,2) (3,4) (2,4) (0,1,4) (4) {17,31,20,20,43}
+[#.#..#...] (1,4,5,6) (0,1,2,3,5,6) (3,6) (0,1,3,4,5,7,8) (5,6) (0,2,5) (0,1,2,6,7,8) (0,1,2,4,5,7,8) (0,2,3,4,5,7,8) (0,4) {70,33,46,33,63,69,33,46,46}
+[.##.#.#] (3,4,5,6) (0,1,2,3,4) (2,4) (0,2,3,4,5) (0,4,5) (0,1,4,5,6) (1,2,3,5) (2,4,5,6) (0,1,3,6) {55,41,28,45,56,53,44}
+[#...##.#] (1,2,4,5,7) (0,1,5,6) (3,4) (6) (0,3,4,7) (0,1,4,5,6,7) (0,1,2,4,5,7) (0,1,3,4,6,7) (0,1,7) (5) {19,21,4,7,11,138,13,12}
+[#####] (0,2,3) (1,4) (0,1,2,3) {35,36,35,35,17}
+[...####.#.] (1,2,5,6,7,8,9) (0,4,8) (1,3,8,9) (4,5,9) (1,3,4,5,6,8,9) (2,4,7,8) (0,2,3,5,6,7,8) (1,4,6) {16,28,28,14,46,21,34,28,40,15}
+[#..#] (1,2) (0,2) (0,3) {122,3,107,18}
+[###.#..#] (1,2,4) (0,4,5,7) (4,7) (3,5,6) (0,1,2,3,4,5) (1,3,5) (2,4,6) (1,2,5) {31,40,35,30,36,58,8,15}
+[..#....#.] (4,6) (0,2,7) (0,2,3,8) (0,1,4,5,8) (0,3,4,5,7) (0,1,2,3,4,5) (0,1,2,6,8) (0,1,3,5,6,8) {67,37,40,43,47,40,32,19,35}
+[###.......] (0,1,2) (0,3,4,5,6,8,9) (0,5) (0,1,4,5,6,7,8,9) (0,1,2,4,6,7,8,9) (3,4,6,8) (1,4) (0,3,4,6,7,8,9) (3,8) (1) (6,8) (0,1,4,5) (1,3,6,7,8) {74,234,30,60,77,28,63,44,74,33}
+[.######.#.] (2,4,6,8) (1,3,8) (1,7,8,9) (1,2,4,7,8) (0,1,2,3,6,8,9) (0,1,2,3,7,9) (4,5,6,7,8) (0,3,4,6,7,9) (0,4,5,6,8) {33,44,26,44,31,20,38,30,57,25}
+[#..###....] (3) (1,3,9) (0,1,2,3,6,7,8,9) (4,5,6) (1,4,5,8) (1,2,3,4,7,8) (3,4) (2,9) (0,5) {12,47,30,47,60,41,27,16,34,35}
+[##...####] (2,3,4,5,6,7) (2,3,5,6,8) (3,4,5,6) (0,3,6) (2,3,8) (0,4,6,8) (0,1,7) (0,1,2,3,4,5,6) (0,1,2,3,4,7,8) {65,34,84,105,60,52,83,38,66}
+[.####.##] (0,3,5,6) (0,1,2,3,6,7) (0,2,4,7) (0,2,3,5,6,7) (0,1,3,4,7) (3,4,5) (4,5) {157,145,24,176,150,31,26,155}
+[.#.#] (0,1) (2,3) (0,2) (0) (3) (0,3) {193,17,8,36}
+[#.##.#.] (0,2) (0,2,3,5,6) (1,3,4,5) (2,3,4,6) (1,4) (1,3,4,5,6) (0,4,5,6) {19,140,32,159,165,146,35}
+[###..#] (1,2,4,5) (0,1,2,3) (1,2,3,4,5) (3,5) (1) (0,2,5) (0,1,2,5) {205,222,222,219,17,38}
+[..##.#] (0,4) (0,1) (0,2,3,5) (2,3,4) (1,5) (3,4,5) (0,1,3) {138,22,16,25,123,33}
+[#.##.#...] (0,1,2,4,5,7,8) (1,4,5,6,7,8) (6,7) (1,4,5,7,8) (0,1,2,6,7,8) (0,1,3,4,5,6,7) (0,1,4,5,8) (0,2,4,6,7,8) {42,238,12,17,235,233,35,233,223}
+[.####.#..] (0,1,2,3,4,6,7) (0,2,3,4,5) (0,2,6) (1,4,5,6,7,8) (0,3,5,6,7,8) (1,2,4,5,7) (1,2,4,6,7,8) {60,51,72,42,61,49,73,69,41}
+[.#.#] (0,1,2) (1,3) {0,5,0,5}
+[...#.#...] (0,1,2,3,8) (3,4) (3,4,7,8) (5,7) (1,2,8) (0,7) (2,3,4,5,6,8) {15,20,38,44,34,22,18,9,38}
+[#.###.] (0,1,4) (0,2,5) (3,4,5) (0,1,4,5) {30,24,6,15,39,25}
+[####] (0,1,3) (0,1,2,3) {193,193,173,193}
+[##..##] (0,1,3,4,5) (1,2,3) (3,4) (0,1,3,5) (1,2,3,4) {196,215,19,224,221,196}
+[#.###.#.] (0,7) (0,2,3,5,6,7) (1,6) (1,3,5,7) (0,2,3,4,5,7) (0,1,2,3,5,6) (0,2,4,5,6,7) (0,1,2,3,4) (2,3,5,6,7) (0,1,2,5,6,7) {173,45,173,75,127,188,161,196}
+[.#.####] (0,2,3) (6) (0,1,2,4,5) (3,5) (0,1) (0,3,4,5,6) (1,2,5,6) {41,39,33,13,19,30,22}
+[#.####] (2,3,4) (0,1,5) (1,4,5) (0,1,2,5) (0,2,3,4,5) (0,1,3,4,5) {61,57,46,51,66,76}
+[#####] (0,4) (0,1) (1) (2) (0,3,4) (0,1,3,4) {46,27,14,28,46}
+[###..##..#] (1,3,4,5,6,9) (0,1,2,3,4,5,6,9) (1,2,3,8,9) (0,1) (8,9) (4,6,8) (0,1,3,5,6,7,9) (0,1,2,5,6) (0,1,5,6,7,8) (3,4,6,9) (0,3,6) (2,5,8) {43,39,17,56,44,44,82,23,59,58}
+[##...#..] (1,2) (2,3,4,5,6,7) (0,2,4,6,7) (0,2,4,5,7) (0,1,5) (3,6) (0,1,2,3,4,6,7) {29,14,38,17,34,25,18,34}
+[######] (1,4) (1,5) (4,5) (0,1,2,3) (0,5) (0,3) {33,42,14,23,29,37}
+[#..#.#] (0,3,5) (2,3) (0,1,2,4,5) (1,3,5) {14,14,120,139,3,25}
+[.##..##.##] (0,1,5,6,7,8) (0,1,2,7) (1,2,3,4,5,7,9) (0,1,2,3,4,5,7,8,9) (0,1,2,4,5,6,7,9) (0,2,3,5,8,9) (2,4,5,8) (2,4) (3,4,5,6) (1,2,3,4,6,7) (0,5,7) (1,3,8) (0,1,3,7,8,9) {81,62,70,65,67,92,39,77,53,51}
+[#..#.#] (0,2,3,5) (1,2) (0,5) (2,3,4,5) (1,2,3,4,5) (1,2,3) {31,208,221,209,21,52}
+[###.] (2,3) (0,1,3) (0,1) {152,152,11,160}
+[#..##] (0,1,4) (0,2,3) (0,2) (0,3,4) (1,3) (0,3) (1,2,3) {54,27,36,56,19}
+[.##..#] (0,1,2,4) (0,1,3,4) (0,2,4,5) (0,2,3,4,5) (1,2) {62,40,44,39,62,24}
+[..###] (2,3) (0,2,3) (0,1,4) (2) (0,1) (1,2,3) {49,44,58,43,12}
+[#.#.##..] (0,1,4,7) (0,3,5,7) (1,3,7) (0,1,2,3,4,5,7) (1,4) (1,3,4,7) (1,2,3,4,6,7) (1,2,3) (1,2,4,6) (0,1,3,6) {60,259,200,250,237,39,182,251}
+[.#.#.#...#] (1,3,4,5,6,7,9) (1,2,3,4,5,6,7,8) (1,2,4,5,6,7,8,9) (0,1,2,3,4,5,8,9) (1,2,4,6,7,8,9) (3,4,6,7,8) (1,3,4,5,6,7,8,9) (5,6,7,8) (1,3,5,6,9) (6,8) (1,3) (0,2,4,5,6,7) (0,6,7,8,9) {47,111,67,96,102,122,143,110,109,99}
+[.##.#..#..] (0,1,2,3,5,6,8,9) (1,3,5,6,8,9) (0,2,3,7,9) (1,2,3,5,7,8) (8,9) (1,3,4,5,8) (0,2,3,5,8,9) (2,6,8) (0,1,2,3,6,7,8) (0,2,3,5,6,8,9) (0,7) {26,35,51,45,3,32,31,34,60,32}
+[...#...] (1,2,3,4) (0,1,2,3,5,6) (0,1,2,5,6) (0,1,2,3,4,5) (1,2,6) {28,31,31,28,11,28,20}
+[.##.##.#] (0,1,4,6) (2,3,4) (2,6) (4,5) (0,1,2,4,5) (1,2,3,5,6,7) (0,3,5,7) (0,2,4,5,6,7) (4,7) (0,5,6) {48,21,44,35,70,73,35,44}
+[...#.##] (0,1,5) (0,2,3) (1,2,4,6) (0,1,3,6) (3,5,6) (0,4,6) {31,15,1,18,15,20,32}
+[#.#.] (1,3) (0,2) {16,8,16,8}
+[#.#####.#] (2,3,4,5,6,7,8) (0,3,5,6,7) (1,3,4,5,6,7) (2,6) (0,1,2,4,5,7,8) (5,6,7) (0,2,3,8) (1,2,4,5) {29,31,49,39,39,60,55,53,29}
+[####..] (1,2,3) (0,1) (4,5) (0,1,2,3) (0,1,2,4,5) {26,38,18,14,13,13}
+[#...#.##.] (1,2,5) (0,1,5,6,7,8) (0,2,4,5,6,7,8) (0,1,2,3,4,8) (1,8) (0,1,3,4,5,8) (0,1,3,5,8) (1,2,4,5,6,7,8) (0,2,4,5,7) (0,1,2,4,5,6,7,8) {255,273,68,29,67,277,234,237,263}
+[#.#..##] (2,4,6) (4) (2,3) (4,5,6) (0,2,5,6) (0) (0,3,4,5,6) (1,3) {17,13,34,24,37,27,44}
+[#.##.] (1,2,3,4) (0,2,3,4) (0,1,2) (1,2,3) {5,7,11,10,7}
+[#.#.] (1,2,3) (0,1,3) (0,1) (3) {8,9,1,22}
+[.#..#.] (0,2,5) (0,1,2,4,5) (0,3,4,5) (1,3,5) {30,29,25,19,20,44}
+[#.##.] (0,2,3) (0,1,2,3,4) (0,1,2) {34,33,34,18,17}
+[##.##] (2,3) (0,1,2,3) (0,1,2,4) {22,22,42,25,17}
+[..#.#] (2,4) (0,2,3) (4) (0,1) (0,3) {23,7,24,16,20}
+[..##] (0,2,3) (1,3) (2,3) {10,16,15,31}
+[..#..##] (1,2) (1,2,3) (1,2,4,6) (0,2,4) (2,3,4,5) (0,2,3,6) (0,2,3,5,6) (0,1,3,4,6) {27,16,42,33,26,21,22}
+[###.#.###.] (7,9) (1,2,3,4,5,6,8) (1,6,8,9) (2,3,4,5,6,8) (4,6,9) (0,1,2,4,6,7,8) (3,5,6,7) (0,1,2,4,5,6,9) (1,3,8,9) (0,2,5) (7) (0,4) {152,157,143,24,163,31,174,138,150,38}
+[..#.] (2,3) (2) (0,2,3) (0,1) (1,2,3) {35,20,48,28}
+[#....] (2,3,4) (1,2,4) (0,3,4) (0,1,3) {6,14,32,24,38}
+[.#####.#.#] (0,1,2,5,6,8) (3,6,8) (3,4,6,8) (0,1,7,8,9) (3,6,7,8) (0,4) (0,1,2,5,6,7,8,9) (0,2,3,4,5,8) (0,2,3,5,7,8,9) {73,31,52,59,41,52,47,43,90,43}
+[#.#####..#] (0,1,2,3,5,6,7,8,9) (0,1,2,3,4,6,7,9) (1,2,3,6,8) (0,1,4,6,7,8,9) (0,1,2,4,5,7,9) (0,1,8) (2,3,4,5,7,8,9) (0,8) (8) (0,2,3,4,5,6,9) (2,3,6,7,9) {91,72,90,78,71,55,81,80,93,98}
+[#.##..#.#] (1,4,5,6,7,8) (0,1,3,5,8) (1,3,6) (1,2,3) (2,3,4,5,7) (1,2,3,4,6,8) (1,7) (1,4,8) (2,3) (1,5,6,8) (0,1,3,7) {6,64,54,68,43,47,43,35,42}
+[#.###.##] (0,1,3,4,6) (0,1,5,6) (0,2,3,4,5,7) (1,2,3,4,5,7) (0,1,2,3,4,7) (0,3,4,7) (1,2,5,6,7) (0,4,5,6,7) (0,7) {100,64,36,65,80,59,52,81}
+[.####.#.] (1,3,4) (1,7) (1,2,3,5,6) (2,3,4,6,7) (0,2,4,6,7) (0,1,2,4,5) {24,184,193,170,39,167,181,42}
+[....#] (2,3,4) (1,2,3,4) (1,2,4) (0,1,2) (0,1) (3) {12,40,59,47,47}
+[.##.] (1,2) (0,2) (0,2,3) {23,6,29,10}
+[.#.#] (1,3) (0,2) {9,17,9,17}
+[#.##.] (0,1,4) (0,2) (1) (1,4) (0,1,2,4) (0,3) {51,72,27,5,56}
+[.....##..] (4,8) (0,1,2,3,4,5,6,8) (0,1,2,4,5,8) (0,1,2,3,5,6,7,8) (5,6) (0,2,7) (0,2,4,7) (3,4,5,8) {173,38,173,47,64,72,41,149,72}
+[##.#...] (2,5) (0,4,6) (0,4,5) (0,2,3,4,5) (0,1,2,5,6) (2,3,5,6) (4) (1) (0,1,2,3,6) {37,32,199,180,27,202,174}
+[##.#..#...] (0,1,3,4,6,7,9) (1,2,3,4,5,7,8,9) (4,5,6,9) (3,4,6,7,8,9) (0,2,3,7,8,9) (0,3,5) (2,3,5,8) (0,1,2,3,5,6,7,8,9) {58,25,42,98,51,53,48,60,59,70}
+[#.#.###.##] (0,1,2,6,7,8) (0,1,3,5,7,8,9) (0,1,3,5,7) (2,4,5,8) (1,6,7) (2,7,8) (1,2,4,8,9) (1,3,5,6,7,9) (1,2,4,5,9) (0,2,3,4,6,7,8) {41,98,56,47,48,58,46,72,50,60}
+[##.#..#] (3,4) (0,2,3,4,5) (0,1,2,4,5) (1,2,3,5,6) (0,4,6) {13,5,13,155,158,13,4}
+[#......##.] (0,1,3,5,6,8,9) (1,2,3,4,6,7) (0,2,3,4,5,6,9) (3,4,5) (1,2,3,4,5,6,7,8) (0,1,2,3,4,5,6,7,9) (0,1,4) (0,3,6,9) (0,1,2,3,4,5,6,7) {75,78,55,93,91,76,75,42,21,46}
+[###..] (0,1,2,4) (0,1) (0,2,4) (2,3) (4) {17,13,24,17,8}
+[##.....] (0,2,3,6) (0,1,2,3,4,6) (2,3) (1,4,5) (1,4,5,6) (0,2,3,4) {37,46,37,37,57,26,36}
+[..#######] (0,1,2,3,5,7,8) (0,1,6) (0,1,2,4,5,7,8) (2,3,4,5,6,8) (4,6) (3) (2,3,4,5,6,7,8) (0,1,2,3,4,5,6) (0,1,2,3,6) {58,58,61,66,37,49,60,25,37}
+[.##...#.#] (0,2,3,4,5,6,7,8) (0,1,7) (1,3) (8) (4,5,6,7) (0,2,3,4,5,6) (0,5) (3,4,5,7,8) (0,1,2,4,8) (0,1,2,3,6,7,8) {55,40,39,52,52,48,39,58,48}
+[#.#.] (0,1,3) (2,3) (0,2) (0,2,3) (0) (3) {37,20,15,52}
+[#.#..] (4) (1,3) (0,1) (1,2,3) (0,1,4) (0,2,4) (0,2) {37,41,21,20,24}
+[.##.#] (1,3,4) (1,2,4) (0,1,2,3,4) {12,44,30,26,44}
+[########] (1,4,5,7) (2,3,4,5,7) (0,3) (0,1,3,4,6,7) (0,1,2,5) (0,1,2,3,4,6,7) {29,41,28,33,45,41,15,45}
+[#.#..#] (0,2,5) (0,1,2) (2,3,4) (1,3,5) (1,3,4) (1,2) {17,51,48,30,15,20}
+[##.#.#.#.] (5,6) (1,4,5) (0,3,4,8) (1,4) (0,2,3,7) (0,3,6,7) (2,4,7) (2,5,6,7) (6,8) {41,19,28,41,55,11,25,40,24}
+[.#.#.] (1,4) (0,3,4) (0,1,3) (0,2) (2,3) (4) (1,2) {26,22,14,18,29}
+[.#....#..#] (0,1,5,6,7,8,9) (0,1,3,4,5,7,8,9) (5,8) (0,1,2,3,4,6,7,9) (4,6,7,8,9) (0,4) (0,3,4,5,6,7,8) (1,5,8) (1,2,3,4,6,7,8) {59,61,25,63,69,64,63,82,88,44}
+[#.#.#] (2) (1) (3) (0,1,2,4) {19,122,24,13,19}
+[#..#.##.] (1,5) (2,4) (0,3,4,6,7) (0,1,2,3,5,7) (3,4,5,6) (1,2,3,4,5,7) {20,16,13,204,207,194,196,26}
+[##......] (1,2,4,5,6,7) (1,5,6,7) (0,1,3,4,5,6) (0,3,4,5,6,7) (2,4,5,7) (1,2,3,6) (0,2,3,4,5,6) {34,25,42,49,51,52,50,33}
+[#.##..#] (2,4,6) (0,1) (0,3,4,5,6) (2,6) (2,3) (0,4) (0,1,4,5,6) (1,2) (0,3,5) {64,19,32,53,44,42,40}
+[...#.#....] (1,2,4,5,6,7,8,9) (2,3,5,6) (2,5) (2,4,5,7,9) (0,1,3,4,5,7,8,9) (0,4,5,6,8,9) (0,1,2,3,4,6,8,9) (3,9) (1,6,8,9) (0,1,2,3,4,9) (3,5) (0,3,7) {202,190,79,223,218,237,52,183,188,223}
+[##..] (0,3) (2,3) (0,1) (1,2) {23,20,25,28}
+[##.###] (1,3,4) (0,1,4,5) (0,2) (2,3,5) (2,3,4) (0,3) (1) (1,2,4,5) {26,231,48,220,220,42}
+[##..####..] (0,1,3,4,5,6,9) (0,2,4,6) (2,3) (0,1,2,4,8,9) (4) (1,2,3,4,7) (1,2,3,7,8) (1,4,6,9) (0,3,4,6,8,9) (1,6,7,8,9) (0,1,2,3,4,5,7,9) (0,1,2,4,5,6,8,9) {53,83,61,53,106,20,61,50,42,72}
+[#######] (0,2,5) (3,4) (0,1,2,4,5) (0,1,5) (0,1,2,5,6) (0,2,5,6) (1,2,3,4,5) {40,35,29,28,30,48,16}
+[..##.....] (2,3) (0,1,2,4) (0,1,3,4,5,6,7) (3,4,6,7,8) (0,1,3,7,8) (0,1,2,5,6,8) (0,2,3,6) (0,7) (0,5,8) (0,2,3,4,6,8) (0,1,2,4,5,8) {124,54,84,73,51,50,57,43,65}
+[...#] (0,1,3) (0,1) (0,2,3) {22,6,16,18}
+[.###...###] (2,5) (0,6,7,8) (1,2,3,4,8) (3) (0,1,5,6,8,9) (0,1,2,3,5,6,7,9) (2,3) (0,1,2,5,6,7,9) (5,8) (0,1,2,7,8) (0,1,2,3,4,5,7,8,9) {45,42,155,138,11,43,36,43,48,22}
+[.#.#] (1,3) (0,1,2) {6,150,6,144}
+[.#.#.#..] (3,4,5,6) (0,2,5,7) (1,2,3,5,6,7) (0,1,2,4,5,6,7) (2,4,5,6,7) (2,4,5) {17,1,32,7,23,39,11,20}
+[#####.##] (0,3,4,5,6,7) (0,1,2,3,4,5,7) (1,3,6) (0,5) (1,3,5,7) (2,4,5,7) (0,1,4,5,7) (1,2,3,5) {58,26,15,32,48,66,20,50}
+[.####] (3) (1) (0,4) (2,4) {20,9,8,4,28}
+[..#.#] (0,1,2,3,4) (2,4) (0,2,3,4) (1,3) {19,10,24,26,24}
+[#...] (2) (0,1,3) (1,3) {16,19,2,19}
+[#...###] (0,1,2,4) (0,3,4) (0,4,5,6) (0,1,2,5) (1) (0,2,5) (0) (1,2,4) {58,222,34,15,32,31,7}
+[..####.##] (1,3,7) (6,8) (3,4) (1,4,5,6,8) (0,1,2,6,7,8) (0,2,4,7) (0,5) (1,2,4,5,7,8) (2) (0,1,2,3,4,5,7) (0,2,6,7,8) {56,36,56,27,54,52,16,50,29}
+[#.#.#..##.] (0,2,4,5,6,8,9) (0,1,3,5,6,7,8) (1,2,4,5,6,7,8,9) (3,4,6) (2,3,8) (1,3,5,8) (0,2,3,4,5,6,7,9) (0,1,2,3,5,6,8) (0,1,6) (0,5,6,7) {227,61,221,56,209,249,253,47,237,201}
+[#####..] (2,4,5) (1,2,4,6) (0,1,6) (3,4) (5,6) (1,3,5,6) {14,51,25,22,30,36,65}
+[##.##.] (0,1,5) (1,2) (0,2,3,4) (0,1,2,4,5) {32,26,28,14,20,18}
+[#....#..] (4,5,6) (2,3) (0,1,2,5,6,7) (3,6) (0,1,3,4) (5) (1,2,3,5,6,7) (0,1,2,3,4,5) (1,4,5,7) (1,5,6) {25,70,50,61,43,84,44,32}
+[###.#.##.] (0,1,3,4,5,6,8) (0,1,6,7,8) (1,5) (0,1,2,3,5,6) (1,2,3,5,6,7,8) (1,2,3,4,8) (0,2,3,4,5,7,8) {7,18,10,10,4,8,12,11,15}
+[#...] (3) (1) (1,2) (0) (0,3) (0,2) {20,13,7,14}
+[#.....###.] (0,1,3,4,5,7,8) (0,3,4,5,6,8,9) (1,5) (0,1,2,3,4,6,7,8) (0,3,4,6,8) (0,3) (4,5,8,9) (1,2,3,4,5,6,7,8,9) (0,1,2,3,4,5,6,7,9) {85,47,27,87,86,53,58,41,81,33}
+[#..###..##] (0,2,3,5) (0,2,5,8,9) (0,1,2,3,4,6,7,8) (3,4,6,9) (0,1,2,7) (2,3,7) (0,3,6) (0,2,3,4,6,7,8,9) (2,4,6,9) (3,4,7) (0,1,2,6) (1,2,3,4,5,6,7,8,9) {42,18,67,82,61,17,66,55,24,50}
+[.#.#] (0,1,2) (3) (0,2) (1) (1,3) {16,31,16,30}
+[..#.###.] (0,2,6,7) (2,5,6) (0,1,2,3,5,7) (0,1,4,6,7) (0,1,3,4,7) (2,4,5) (0,2,3,4,6,7) (1,2,4,5,6) (1,4,6) (0,3,5,7) {78,59,88,57,72,85,71,78}
+[..#.] (2) (1,2) (0,1,2) (1) (0,3) (1,3) {37,28,31,20}
+[......#.] (1,3,5,7) (0,2,3,6) (1,3,4,5,6,7) (1,2,4) (0,1,2,4,5,6) (0,1,4,5,6,7) (1,2,5,6,7) (3,4) {32,64,44,32,54,55,51,44}
+[..#.###] (1,6) (0,5) (0,1,2) (1,3,6) (0,3,4,5) {30,37,17,13,4,13,20}
+[..##.#.] (1,3) (0,1,2,3,4,6) (1,2,4,5) (0,1,3,6) (1,2,4) (2,5) {18,32,133,21,24,118,18}
+[.##.####] (0,5,6) (1,3,4,5,6,7) (1,4,7) (1,3,4,5,7) (0,1,2,3,4,5) (0,2,6) {38,32,21,30,32,47,38,20}
+[##..##..] (3,4,5,6,7) (2,3,4,6) (1,3) (2,6,7) (1,5) (0,2,3,6) (0,1,2,3,4,5) (2,3,6) (0,7) {13,27,42,69,39,28,59,40}
+[######..#] (6,7,8) (1,2,5,6,7,8) (2) (0,2,4,8) (2,3,4,5,8) (0,2,4,5,6,7,8) (1,3,8) (2,4) (0,2,5,6,7) (1,3,6,8) (0,1,2,3,4,5,6) {42,15,70,25,50,39,48,38,68}
+[#.#....#..] (0,1,2,4,6,7,8) (2,4,5,7) (3,4,5,7,9) (0,2,7) (3,6,7) (3,4,6,7,9) (1,4,5,6,8,9) (3,4,6,9) (0,1,3,5,6,9) (0,8,9) (0,1,3,4,5,7,8,9) {52,42,18,47,49,39,65,41,38,74}
+[.##..] (0,1,4) (2,3,4) (0,1,2,4) (0,2) (0,1) {42,35,21,8,27}
+[##...#] (1,3,4,5) (3,4) (1,3,4) (1,4) (3) (0,2,4) (2,4) (0,3) {32,31,21,57,71,4}
+[........#] (0,1,3) (0,1,2,4,6,7,8) (7,8) (3,4,5,6,7) (0,1,2,3,5) (1,6) (5,7) (0,1,4,5,6,7,8) (5,8) (0,1,2,3,5,6,7) {47,48,34,34,35,60,40,70,50}
+[###..###..] (0,1,3,5,6,7,9) (1,4,5,7,8,9) (6) (2) (0,8,9) (0,1,3,4,5,6,7,9) (0,2,3,6,7,8,9) (0,1,2,5,6,7,8,9) {31,44,28,9,16,44,139,45,39,47}
+[#..###] (2,3,5) (3) (0,1,3,5) (0,3,4,5) (0,4,5) {25,3,15,51,22,40}
+[###.] (0,1,2) (0,1,3) {20,20,16,4}
+[##.##.] (1,3,4,5) (2,3,5) (0,4) (3,4,5) (0,1,2,3,4) (2,3,4) (0,1,2,3) {201,26,27,50,230,24}
+[.#......] (0,2,3,5,6,7) (4,6) (4,5,7) (1,3,4,5,6) (0,1,3,4,5) (0,1,3,5) (0,3,4,5) (0,2,5,6) {66,43,29,66,73,97,65,26}
+[##..#.] (0,2,5) (0,1) (0,4) (0,2,3,5) (2,3,4,5) (0,1,2,5) {52,22,39,23,12,39}
+[..##] (0,3) (0,2,3) (0,2) (1,2) {46,18,50,28}
+[##.##..##] (0,1,2,4,6,7,8) (4,5,6) (4,6) (1,3,4,5,6,7,8) (2,3,6) (0,5,6,7) (0,1,2,4,6) {23,16,29,25,38,21,70,24,11}
+[.#.##] (0,1,3,4) (3,4) (2,3) (2) (0,3) {35,20,31,57,23}
+[.#.#...#.] (0,1,2,3,4,6,8) (0,3,5) (1,3,4,6,7) (0,4,5,7) (0,1,2,5,6,7,8) (2,3,5,6,7) (2) (1,5,7) (0,2,3,4,6) {66,56,63,66,52,61,70,64,34}
+[.######] (2) (0,2,5,6) (0,4,6) (0,1,2,3,6) (1,2,3,4,5,6) {30,31,53,31,22,16,43}
+[..####...] (1,2,5,6,8) (0,1,2,3,4,6,7) (2,7) (1,3,4,5,6,7,8) (5,6) (2,3,7) (0,3,6,8) (0,1,3,5,6,7) {31,134,43,153,108,141,156,152,123}