diff --git a/day12/example.txt b/day12/example.txt
new file mode 100644
index 0000000..c5bec3a
--- /dev/null
+++ b/day12/example.txt
@@ -0,0 +1,6 @@
+???.### 1,1,3
+.??..??...?##. 1,1,3
+?#?#?#?#?#?#?#? 1,3,1,6
+????.#...#... 4,1,1
+????.######..#####. 1,6,5
+?###???????? 3,2,1
\ No newline at end of file
diff --git a/day12/input.txt b/day12/input.txt
new file mode 100644
index 0000000..1e233a6
--- /dev/null
+++ b/day12/input.txt
@@ -0,0 +1,1000 @@
+?#.??????#??#?#?#?#? 1,1,15
+.???#??.????#?? 6,5
+???????#?#?#?#??#?? 1,1,6,1,1,2
+##?..???#?????# 2,1,7
+.?????????? 2,2
+??????##????#?.?.??. 1,7,4,1,2
+?.???..???.?..?## 2,1,1,3
+??...??.??? 2,2
+????????#?#????#.?? 1,1,7,1,1
+.#..??##?.#.?? 1,4,1,1
+???#????????.???#??. 1,1,5,6
+.?.??.?#?#?.???#?? 4,2
+.??#??#?.??.# 2,2,1,1
+#.??..?.????.??? 1,2,1,2,1
+?.?.?#??.???##??#. 1,1,1,2,2,1
+?????.??.??? 1,1,1,1
+..?????.????? 2,1
+#?##??.??#??#?..?? 6,3,2,1
+.???????#?####??#.# 1,13,1
+?.#??.????#?.? 3,4
+.??.#??#.????????? 1,1,1,4,1,1
+???#???????#??#.??? 1,12
+???????#??? 1,3
+???????.??##???.. 1,6
+??????.?#.? 3,1,2
+?#.#?????????? 1,1,3,1
+?????????? 1,3
+?????#?????#? 4,4
+????????.?# 1,2,1
+?..?????.?.. 1,2,1,1
+.?#??#..???##????.#. 5,6,2,1
+?..?#?#????#?# 1,7,1,1
+????#?#?..???? 1,6,2
+.#???.?????. 2,3
+???#.?.#??.?##?????# 2,3,2,3
+.??????#???. 1,2,2
+???##???????##?. 6,1,1,3
+??????????..##.? 5,2
+#.#?#??#????.?#? 1,3,6,2
+??#?????#??? 1,2,2
+#?#.???#..#?? 3,1,2,3
+.#?????????#??????. 5,8
+.?#??.#????????? 2,1,2,1,1
+..?????.#?##?.#.#?? 2,1,5,1,2
+?#????#???#?#?? 1,1,6,1
+.?????#?????? 1,3,5
+.#.?.??#?#?#??#?#?#. 1,12
+#???.#?????.????#?# 1,1,1,1,2,5
+?.???????.#?????#??? 1,1,3,7,1
+?????????? 1,1,2
+..????#??#?????.?.? 1,10
+???#?###?#??????##.? 8,6
+..???????#??#????. 11,1
+.?#?.?????. 2,4
+?.###??##?..?????? 7,4
+#??????#????##????#? 1,3,1,5,1
+???#.?.???????#??#? 1,2,1,1,6
+??#???#?#?##??? 4,7,1
+?##?.??.??? 2,1,2
+??.??.??###? 1,1,1,3
+?#..#???.#??????? 1,4,7
+??#?.??##.? 1,3
+.??#??..???.?? 5,3
+??????.?#??#???#?? 2,1,2,5,1
+.????#?.??? 2,1
+.#??##??#????#.?.? 9,1,1,1,1
+??.???????.??.?#?#. 2,1,5,2,1,1
+??????????#??#?#? 1,14
+??#???##?. 1,4
+?..#????.##?#?. 4,4
+??#??#???.?????? 8,1
+?.#.#??.??#.## 1,3,1,2
+???##?#?.##??. 5,2,1
+?.???..?..??????#? 1,1,1,1,1,4
+?#????????????? 12,1
+??????##??.#????? 6,1,3
+????#???#?.?? 1,2,4,1
+????????????#??? 1,1,8
+?????##?.?#? 1,3,2
+??????.#..?????#. 4,1,2,2
+?#?#????????? 2,2,4,1
+..#?.????? 1,1
+??#??#...?. 5,1
+?????.???? 3,3
+?????##.????. 1,3,1
+..?.?????????? 1,8
+?#?#?#??.#??#.? 1,1,1,1,4
+?#?????????## 2,1,7
+#?##?##??.?.?#.?#.? 8,1,1,1
+?????#???.##??.?.. 4,1,2,1
+?#?#??#.?????????.# 4,1,2,3,1,1
+??#?#?#???.????#???. 1,1,1,1,1,7
+?????#??????????? 10,2,1
+???????.?? 4,1,1
+?..????.?????###? 1,3,8
+???#????#??#??#.? 6,1,5,1
+#.????..#? 1,2,1
+.#?.#?#.??.?###?. 2,3,1,4
+????##???????.?# 1,5,1,2
+.##??##???????.? 7,2,1
+???#?#.??????? 3,4
+.?##.?.????.? 3,3
+#.???#.?????#???.#. 1,4,4,1,2,1
+.?.?.##?##??#?? 1,1,6,1,1
+????#.?#?#?.?.. 2,4,1
+???????#?.?? 9,1
+????.#.#.??.????.#? 1,1,1,1,4,1
+?.?#??????????#??# 1,4,10
+.?.?????????#??? 1,10
+.?#??#????#?..?## 5,3,2
+#?#?.?#??? 1,2,3
+???????#??.?????. 1,7,1,1,1
+?.??#?.???????##??. 1,4,2,1,4
+?#??#?#???#??# 1,3,3,1
+.?.??#.???.????.???? 3,2,4
+??#????.?. 2,1,1
+?..??#?.#???.?.?# 1,2,3,1,1
+##??#????????## 3,1,4,2
+??????#?.????.#??#? 2,2,4,4
+#???????##????## 1,1,11
+#???#?#??#.#??.?#?. 1,5,1,2,3
+?##..??.????????? 2,2,3,3
+..??#??#???.?? 2,3
+#???.??#?.???.?##?? 1,2,2,1,4
+??##?#????.??? 1,5,2,1
+??###?????.??? 8,2
+????????.?#???? 1,1,1,1,2
+??#?????#?#?.#???.#? 4,1,5,2,1,1
+.????.?????# 1,1,1,1
+..???.?.???.? 3,2
+??#??.????. 4,2
+???#?????#????? 1,1,3,1
+.#??#??.?#?###? 4,5
+??#??#??..??.????? 2,1,2,3
+???#??????##??### 2,1,1,7
+????.??#??????.???? 2,1,9,1,1
+.#?.###????? 2,4,2
+.####?.?.?# 4,2
+.?##??????##.?. 7,3,1
+????.?##??# 1,5
+###??#?#????????.. 8,6
+?.???#????.?.?#????? 6,1
+????..?????? 2,1,1,1
+.????##.????. 6,1
+?#??????????? 3,1,1,1
+??.???#????#?##?. 1,13
+?.?#??#?##???.???..? 9,1,1,1
+??#?#?#.?#???? 7,4
+??###???????. 6,2,1
+??##?#.???.?##?? 3,1,2,3,1
+????????.#?##?????.? 1,2,1,4,4,1
+??.??????????.?????? 9,1
+.#?.?#???#?????.# 1,8,1
+??.?????#????# 1,2,1,2
+??#.??#..#?? 1,1,2,3
+#?..??##??#?? 2,8
+????#???#????# 10,1
+????????#?#??? 1,6
+???????.??.#????## 1,4,1,1,1,2
+???#?????.??#.??.?? 1,3,2,3,2,1
+?.?.#???#??#?????? 2,7
+..#?.?.??#? 1,3
+???#?#??..???.?? 5,1,1,1
+.????#?.??##??#?# 4,7
+???#???#?##?????? 2,6,5
+.?##?#?##??#?#?.???# 2,1,8,1,2
+???????.?#???? 3,4
+#.?#??????.??? 1,4,1,1
+?????#???.. 1,5
+.#???#???????#?#?? 1,1,6,2
+#???####.#??.??? 1,5,3,1
+??#??..#?.?? 3,2
+?#.????#??#.#? 1,1,6,2
+..?##?.?#??.#?? 3,4,2
+?..?????.? 1,2,1
+..??#??#??#????.#? 11,2
+????????.????##??? 1,2,1,6,1
+???????#??#.?.?#??? 10,3
+.#.???#.?. 1,2
+??????#???#..?? 2,3,1,1
+?????###?.??????.?# 9,1,1,1,2
+??##????.?????????? 8,1,1,3,1
+??##??.#?.#??# 3,1,1,1
+?#???.?##?????..? 3,5,1,1
+#??????????.#???#??? 5,1,3,2,2,1
+??.#..????????? 1,6
+?.?#??#??..?? 3,1,1
+??????.?..???. 3,1
+??#???#??.??? 8,3
+??????.#??????? 3,5
+??#..?#?.???#?.. 3,2,4
+????..???#? 3,3
+?.#????????.??.#??# 4,1,2,1,2,1
+??.?##???##???? 1,3,6
+#?#.??#?.?### 1,1,3,4
+?.#?.??#?????? 1,2,6
+??.#.?.?????????#? 1,1,7,1
+?.???##???#.?? 5,2,1
+????????#?#..# 7,1,1,1
+?#?.??.?????.??# 2,2,3,1,1
+.??#?####??????? 10,1
+.????.##??????#??#. 4,12
+.?.??#?##???#? 6,2
+????##????? 1,3,3
+?#?.????#??#???????# 2,11,4
+??..???.??. 1,2,1
+????????#??.?????.?? 2,4,2,1
+??????#??..#?? 1,1,5,1
+???.#???#? 1,4
+???.???????????? 1,1,1,3,1
+??#???..?#?#?? 2,1,6
+?.??#?.??.?.???.?? 1,4,1,1,1,1
+.?.??.?##??#. 1,2,4,1
+????.#???????##??# 1,1,1,8,2
+?.?#????.?.#??#?#?#? 1,1,1,1,1,9
+??##??##??#???? 3,2,1,1
+#?.?.?#??#??#.? 1,1,6,1,1
+?????.?????? 1,2,2,2
+.???#??????#??#?. 5,7
+.????##?#?#????.??? 8,1
+?.??#?#???.#????. 1,6,1,1
+.?.????.?.?.#???#?? 1,1,1,1,1,6
+??##??##.????????.. 7,3,1
+..#?.###?#??????#?#? 1,8,3
+???##..???? 2,2
+?.???#???????##?##? 1,6,6
+?...?..?#?.? 1,1,1,1
+???#??#?.?#?. 1,2,1,2
+??????????.???????.. 3,4
+?????.?????.?#?#?# 3,1,4,6
+?#???.?????..# 3,2,2,1
+#?.#???#???.?#? 2,1,2,1,1
+?.#????#?#??? 1,3,1,1
+.?#???.??? 4,2
+??????##?????.#?? 2,6,2,1,1
+#??#?#??????. 1,2,5,1
+?#??##???.??#????.? 2,3,1,1,1,1
+#.?????#?#..#? 1,1,5,1
+.??.#.?#???? 1,5
+?##??#?????. 7,1,1
+??.???.??# 2,2
+?.????.#??##??#???#? 1,1,1,2,5,4
+???????#???? 4,1,2
+?#.?.????????? 2,1,4,1
+#????##?#??????.?.?? 1,2,10,1,1
+##?.#???#??????? 2,1,1,8
+???.?????????# 2,1,1,5
+???#.??#??.?.??. 1,2,4,1,2
+??#?#?##???.# 1,8,1
+???..#?????????#? 1,1,1,6
+??##??..??????#?.? 1,2,1,2,5,1
+???#??###?#.?? 2,5,1
+?#?#????.????##? 5,2,6
+?##??.???.??##?###?? 2,3,1,6,1
+#####????????.? 5,6
+.?.??#?.#?.?? 4,2
+?#????.??#?. 5,2
+????#??.####?. 5,5
+???????##?#???#?.#?. 2,11,1
+??###?#??????.??.## 4,1,2,1,2,2
+?####????#.??#.? 7,1,1,1
+????#?.#?? 4,2
+??.??..??#????? 2,2,6,1
+#??????#?#?..??? 1,1,7,1
+#?????????????#??# 1,1,1,1,6,1
+?#??.?????.???.# 3,4,1,1
+??#????????.?#????? 1,4,3,7
+??????.??.#????????? 2,1,1,1,5
+?..??##.?# 4,1
+??#???.#?? 4,1
+?.??????????????? 1,2,6,4
+.???.#????.?# 1,2,2
+.##?#?????# 4,1,2
+.??#?##.?#?#?##.. 6,6
+???.?#?###??? 1,8
+??#?#?#??.?.??#?? 7,4
+????##????#?????#? 14,2
+.#.#?#??.?..???? 1,5,1,1,1
+#?#?????#?.???#???? 10,5
+?????#?..?.??. 5,1
+?#?#????#? 5,3
+??##.???.???# 2,1,3
+?#?.?????? 2,1,3
+.????#???? 3,1
+?????.???..? 3,1,1
+???????#?????? 7,3
+?????????# 3,1
+????.??#???.?? 2,4
+??????????#?? 1,8
+???#??????##??#?..?. 14,1
+????.????????.???. 1,1,1,1,1,3
+?#????#???? 2,4,1
+##?????#?. 3,2
+??#???..?#.???? 2,2,1
+??#???????##.?? 2,2,4,1
+?#???#?#.?# 8,1
+.??????.?? 1,1,1
+?#??##?????????? 6,2,2,1
+#????..##???? 1,1,2,1
+????##???#?.???..? 10,1,1
+??????#????# 4,6
+??.??#.??.? 1,1
+.?.?.?##??.#???? 1,4,3,1
+????#?...??##??#?#?? 4,8
+?#?????#????.??????? 12,1,1,2
+?###??????#? 6,4
+#.?#?#?#??#?#? 1,1,9
+?.???##??#??#??????? 11,3
+?#????#????????...# 3,3,3,3,1
+.#?..#?.#???? 2,1,2,1
+??..?#.??????? 1,2,3,1
+?#..??#??#??? 2,8
+??#???.???##?. 1,3,1,4
+????#?#?#?#?.??.# 3,8,1,1
+??????#??? 2,1
+#??????#??#.#??# 5,5,1,1
+?.???.?##??? 2,3
+?????????.?? 1,1,1,1
+????????#????.#??? 1,1,6,3
+?##.???.?##? 3,1,2
+?????????????????#? 1,1,1,1,1,5
+???#.?#.??##???? 2,1,4
+.????.?..? 1,1,1
+??????.##?#?? 1,1,4
+?#???.???? 2,1,2
+#????#??#?#..?? 11,1
+?..????###?????#? 1,1,4,1,2
+?.#???#???#??. 1,9
+.???#????..???.? 3,2
+???.??#???.???? 1,1,6,1,1
+???##???#? 2,2,3
+???????#????.??#?? 1,4,2,2,1
+#.#??#??????#? 1,4,1,4
+.??#?????###?.??# 4,5,1,1
+.??????#?. 1,3,2
+#?#?????#?.????#?? 4,3,3
+????.?#?.?? 2,1,3
+?.??????????????.?# 1,1,4,1,1,2
+?.#.#?????#? 1,3,1,1
+??.#??.?#???#????#.? 1,2,3,6
+??...?##?????. 1,4,2
+.??.???.?? 1,1,1
+.#??#.??.#?.?#?. 1,2,1,1,2
+#?.????#?. 1,5
+???##??????#??#. 8,3,1
+.?.????#?##?## 1,1,7
+???#??#?????? 2,1,1,1
+???#??##???.?? 2,6,1
+####??#??.?#??? 9,1,1
+???.#??.?.?##?????.# 1,1,1,1,8,1
+##.??????#?? 2,7
+.??..????????#???? 1,8,1
+#????#?#?#?? 4,1,3
+?##??????????#??? 4,3,7
+??????????#?##????? 1,7,6
+??????#?.??. 1,2,1
+??.?.?#??.?.##? 1,1,2,1,2
+????.??#?#????? 1,5
+?????#??#.???##??.# 1,4,3,1,1
+.??#????????.?.?# 1,9,1,2
+????#??.#???#??##?# 3,11
+?###.??#?????#???#?. 4,1,1,2,1,3
+?##?#.?????.????. 4,1,2,1,1
+????#?.??##?.#???? 1,2,5,2,1
+?#?#??.?#?? 4,1,2
+.?#?.???#? 1,3
+#????##?.##?#?.?? 8,4,1
+.#.?.???#?? 1,1,2
+?????##?????????#? 2,10,1
+????..?#?#???????##? 1,13
+????#?#????.??### 8,1,4
+???????#???. 1,1,4
+.??.#?##?#?.?#???.?. 7,4
+#??..#???#?????.??#? 1,1,8,1,1
+???.??.???#?? 3,1,1,1
+?#??#???.???? 5,1
+?#?.??#??##??##??.? 1,11
+#?#??#??##???????? 1,1,1,8,2
+???##?????#???.?.?? 1,9,1,1,1
+??.???????????? 1,1,2,3
+???.?.?#????#??? 1,8
+??##??..#..? 2,1,1,1
+??????#??????? 1,8
+?????.#?#??.#. 1,2,4,1
+?#.?#?#?##????#? 1,7,2
+???#??????????? 1,6,3
+?????#?????#.???. 1,8,2
+???##..???????#???? 3,5,1
+.??#.?.#?? 1,1,1
+???.?#???? 1,1,1
+##???.?#??.?.?.#..?? 5,2,1,1,1,2
+???#??.?.?? 4,1
+.???????###????#?? 6,4,5
+???.??#?#???#????### 2,1,4,1,1,4
+#?..???.????..?## 2,2,1,3
+????#??.#????#??#.? 1,2,6,1,1
+#??.##?#.?.?##????? 1,1,2,1,5,1
+?????.#?#?#?? 2,1,5
+????????????#???? 4,1,3,1,1
+?.?#??#???.???? 6,2
+.?..???.?#.??? 1,1
+??#???#.??????? 1,2,1,5
+#####?#????????? 8,1,2
+???.???#???.. 1,1,4
+??###..?..#???# 5,1,3,1
+.?####?##.????? 7,2
+?#???#??#???..? 1,3,3,1
+.??##??????. 1,3,1,1
+????.????#??##?????# 4,1,9,1
+??#??.???#.#??? 3,1,1,3
+??????#??.?..??#..?. 1,7,1,3,1
+#???#.??????.???..? 5,2,1,1,1,1
+??????????.???? 2,1
+##?##???#????.? 5,5,1
+..??.?.???.?? 2,2
+#????.??#?#????.?? 4,4,1,1,1
+??.??.????????#. 1,1,3,1,1
+.#####?#??????#??. 10,4
+?????????????#?.?? 2,7,3,2
+?????#??#?? 1,3,4
+.?#?????????#??? 2,1,4
+#.??#??##????#??#? 1,15
+??????.???.? 1,1,1,1
+???.#.##??#.?###? 1,1,1,5,4
+..?#?##.??????# 5,2,3
+#???????????.?????. 6,2
+??#??#.#???#?? 4,1,4
+????.???#?. 1,1,3
+????#????#?#.???#?? 1,8,1,2
+?????.##????#???? 5,4,1,1,1
+??????.????? 2,1,1,1
+?##?????.???#? 6,1,1,2
+?.#??#?#.??#??.#. 1,1,4,4,1
+#?.#???.?.?#?????? 2,1,1,1,4
+????#??????.????.. 2,2,1,1,2
+?.###??.?????.# 5,1,2,1
+???..######.? 1,1,6,1
+.##???????.# 3,1,1,1
+#????.????????? 1,1,1,1,2
+#??#.#?????#??.???# 4,1,1,2,1,1
+?#???#??#.???.. 5,1,1
+???#?????#???? 3,1,4
+.???.?????? 2,1,1
+???#???#????##?? 4,1,7
+??#.??.???#?????#.? 2,1,1,6,1,1
+?##.??#????.?#?#??. 3,2,3,6
+.#??#??????#?? 2,9
+?.???#??.???#?# 1,1,1,1,6
+????#??#???.? 1,1,4
+??????#?.????#?###?# 6,11
+#????#????#??#..?? 1,4,3,1,2
+???#??..#??#??# 1,3,1,5
+??.???##??####? 1,1,3,4
+???????????#.. 3,4,1
+#?#??.#?#?#?? 5,1,4
+?.??#??#???##???? 1,1,1,3,2
+?#???????#????? 12,1
+?.?????#?? 1,2,1
+#????#??#????#???##? 1,1,1,2,9
+??###??#?#???#.??? 11,2,2
+#?..??#???.? 1,5,1
+??#.?#????#?????? 1,3,2,1,2
+??#??????##???? 6,3,1
+.#?.?#.#??#??.#?#?#? 1,2,1,1,1,5
+?#?#???.?#??#.. 1,1,1,2,1
+????#????##.?# 1,7,1
+.??????????????#... 3,3,1
+..?..?.?##?? 1,5
+??#?...##?#?#? 2,2,4
+.????.?#.?.. 4,1
+??.????#??##??#???? 1,9,6
+...?#??.?.. 4,1
+?.?.#..??..# 1,1,2,1
+???##??.??. 2,3,2
+?#?#????????.?#???? 1,3,2,2
+???##?????. 5,2
+???#??#??###???#.? 6,5,1,1
+???.???..##??#?#### 2,1,1,3,6
+??#??.?#..#.? 1,1,2,1
+.????#??#.?###?##.? 1,1,1,1,6,1
+.####?????? 4,2,2
+?.?#?#??????.??#?. 1,6,1,2
+????????????? 8,3
+#?##?????.?? 4,1,1,1
+??#????#????#???#? 3,1,1,3,1
+.#.?.#.?#?#.? 1,1,3,1
+?#.??#???.?????? 1,5,1,1,2
+..????????. 2,3,1
+.????.#????#????? 1,1,3,2,2
+..??.???.#?.?##?#? 1,2,2,4
+??#?#?#??##????? 1,10,1
+.??????#???. 1,1,1,2
+.?....#???? 1,4
+?##??..???????.?? 5,1,1,2
+.?.??????#?. 2,4
+?????.??#??#? 1,2,7
+?#????.??????..??#? 5,5,3
+#???.#?###????.? 3,5,1,1,1
+#?#????.??#??#?? 6,5
+#?#????.??##????.? 7,4,1,1
+.#?.?????# 2,2,1
+?.??#?.#????? 1,2,1,3
+???#?.???..# 1,1,2,1
+?###??#?????? 6,1
+?????#?????.? 4,1
+.???..#?.?????#? 3,2,3,1
+.?#?????.?# 6,1
+#???????.?? 1,6,1
+?#..?#???? 2,3,1
+?###??#??#.?.???. 9,1
+?#?#.????#. 3,3
+???..?..???#????? 1,1,2,5
+???..?##???.?.?#??# 1,4,1,1,5
+#?????#.?? 3,2,2
+.?.????#???????. 1,5,2,2
+.????????#???? 8,1
+??.??#??????#???#?? 2,6,1,1,1,1
+?#????##??????#??? 13,1,1
+???.?#..#??#?#??#?## 2,2,12
+.???#????????.. 5,2
+.#??.???#??..?#?? 1,2,3,2
+??.?????##??.??? 2,1,1,4,1
+?#.???#??##.? 2,5,1
+???????#?#??###???# 2,1,9,3
+?#???.??#???. 3,4
+.#..????#??????#.??? 1,4,3,1,1,1
+#???#..??#? 5,4
+?.??#?.???????#?#? 1,1,1,1,2,5
+.?????.??.??.? 2,2,1,1
+?##?#?#?... 4,2
+###??.????????.?.?.? 4,1,1,2,1,1
+???#.?#?????.???? 1,1,7,1,1
+???????.??.????? 7,2,4
+??#?###??.????????? 9,2,3,1
+?#?#?#???#.???#??#. 6,1,1,4
+?.?#???#..? 2,1
+????.???#?#?.?#?.?? 4,6,1
+?????#?????#.? 1,2,1,1
+?#.#.?.??###??? 1,1,4,1
+?#.???.#?.?? 1,1,1,1
+??..?#?##? 2,6
+??????.?##?.??????? 1,1,1,4,1,1
+???#??????? 4,1
+???????#?? 5,2
+?#?????#?#?? 3,4,1
+#?###????#?..??##??? 10,4,1
+.???????#?# 4,2,1
+#???????.?#?? 1,3,2
+..????#?...??????. 2,4
+.?????????? 1,1,2
+??.?.??????####? 3,5
+?.??#??????#??.???# 1,1,9,1,1
+???.?.?#?#??? 1,4
+?.??##??#? 1,2,2
+#??##.???.? 5,1,1
+?????.?????????. 3,2,3
+?.??.??#?#??. 1,5
+?????##??#????#. 1,3,2,4
+.??.?#????.#???#???. 2,1,1,1,5,1
+.#?.?.??#.?? 1,1
+???#?#?#.?.?????.? 1,6,1,1,1
+###??#..#..??#?. 4,1,1,1,2
+.#???????#.?# 1,5,1,1
+????????#???#??????# 1,15,1
+.?#??#?#?#??#.??? 2,9,2
+????##????#?###???. 12,2
+?##??.??.#?#####?#.? 2,1,1,7,1,1
+#??????..?#?##?#? 5,6
+.?.#????.??????.??? 1,2,6
+?#?##?#??????.???#? 7,1,1,1,1
+.????????#?##.?.?? 1,8
+?????##?#.??###?..? 5,3
+#..?#?###?#????.? 1,7,2
+???????#.??#? 7,1
+?#????????.? 8,1
+.?##?#?#?.#??? 7,1,1
+.?????????.?????? 7,1,1,4
+????#?#.???????#??#. 5,10
+.?#???????.?? 3,1
+?????.?#?? 1,1,1
+????#?????#?.?#. 1,9,2
+???.???.#?# 3,2,3
+??#.###??#.?.? 1,6,1
+#??#?#??????#????? 1,3,6,1
+.??#????????? 2,1,1,3
+???????.????????? 6,4,3
+?###?#?#?..???.??? 9,2,2
+?#?###?????.???# 6,2,2,1
+?.?.??#?.. 1,1
+.?#??#?.???? 6,2
+???##??????#?.?.. 9,1
+??##?#???????? 8,1,1
+?##?#?#?#?#????##.#. 16,1
+#???.????#?#?#? 4,1,5
+?.??..??#??.????# 1,1,5,2
+.???.??????? 2,7
+?##??????#?? 3,3
+.?#.?.??#? 2,2
+..?.???..? 1,1,1
+.???.#??????? 1,6
+????#???#???###?.? 1,6,4
+????.#????##.#?#?? 3,1,4,1,2
+.??#??#?.?????. 6,4
+?#?#???.??#??? 1,1,1,5
+???#?#????#???? 1,5,1,1
+??.##??#????.?? 1,2,2,2,1
+?#..?????????#??.... 2,1,3,2
+??#.????.? 1,1,1
+?.??#?..???. 3,1
+???????.??#?? 1,1,3,2
+?##?????.??###.. 2,2,4
+????????#???#???? 1,2,4,2,2
+????.?.?????#???? 1,1,1,6,2
+???????#?????.??# 10,1,1,1
+???#??#??## 1,4,2
+????#???#.?????? 7,1,3,1
+?????????.?. 1,7
+.#???.????#?.#.? 4,5,1
+###???#.??. 7,1
+???#??.???...?????? 1,3,2,1,1,1
+????.?.???.? 3,1,2,1
+##??????.???## 3,3,1,3
+??.?.?????#??#??# 1,6,2,1
+.?????????????# 4,2,1
+#??.?#?.?.?##### 1,1,1,1,6
+?#.???.????. 1,2,1,1
+.?#???.???? 2,3
+????.#?????????. 1,1,2,4
+???#??????#??#?# 1,3,1,6
+.#??#?..????#?#? 5,4
+?.#.??.?##???#??#? 1,10
+??#.#?..???#?#????.? 1,1,10
+...???.#????...??? 3,1
+???#?.?????????. 4,1,7
+??#??#????? 2,3,2
+??????#.??#? 3,1,1
+???.?.?????#??.##? 3,1,3,2
+.?..??#????.?.??.? 1,5,1,1,1
+?..?..##??.??##..? 3,3
+#??????#?#?? 1,1,2,2
+#?.?????????????#??. 1,6,1,1,1,1
+?.????###???? 1,7,2
+?.????####???# 1,9
+???????#??.#?????? 1,5,1,1,1,1
+??.#?#???#.?. 1,5,1,1
+###??#???# 3,2,2
+?##..?????# 2,1,4
+.??????##????. 8,2
+?.?????.#?.??????#?? 1,2,1,1,7
+.??#?#??.??? 1,1,1,1
+#?.#???#?.???. 1,1,3,2
+?.??.????????#? 1,1,3,1,1
+???????#??????#????# 1,4,9
+.?#????????#.##?# 4,1,2,4
+??#.?.?##??.. 1,4
+???.??.?#?..? 3,1,3,1
+?????...????? 4,4
+?###?????.?.? 7,1,1
+.?.???##?.??.?.?. 1,1,3,2,1
+?#??????#????#.????? 2,2,4,1,1,4
+.?.??????? 1,2,2
+????#?#??#?????#?.?? 1,7,2,2,1
+.#???##?#??#?##?#??? 6,1,9
+?????????? 3,2
+????#???####?.? 1,1,6
+??.????.?..?? 1,2,1,1
+??????.#?#??? 1,1,3,2
+????????.??? 6,1
+?#?#????????.? 7,1,1
+??#?.#??##???## 3,2,4,2
+??????#?##?#.?? 11,2
+???????????#??? 1,1,1,4
+???#?#?.#?????#? 5,1,1,1
+#.????????#? 1,2,1,3
+?.?#??###?.#?? 7,1
+???#.#.???.#??? 2,1,1,3,3
+??????#??.? 2,4
+.##???#?????????. 10,2
+?.??????#????#????? 6,5
+???#??#?.? 2,2
+?.?????#???? 1,1,1,3
+??????###???#?##? 3,4,6
+????#.???#????? 3,6
+.??#?.??.????#.?.??. 2,1
+??#??#??????#?#? 2,6,4
+.#???.???#???.# 4,7,1
+#.?.#??#????. 1,2,2,1
+???#.?#??#?????? 2,2,3,2
+#.??#?#??#?###??? 1,12
+.???..#?#????.#?? 3,3,1,2
+.????##?.#???? 5,5
+??.??.?.??? 1,2
+??????????#? 1,1,3,1
+#???#??.??? 1,3,3
+..????..#? 1,1,1
+??????#???????? 3,3,1,1
+???????#??#?????#? 2,9,1
+.###?.??#?## 4,1,2
+???????????.?.?##?? 8,1,5
+??????#.?#???? 4,1,2,2
+?#??.?#????#.????? 3,2,2,1,1,1
+???#??.?#?##? 3,4
+????##????????#??? 3,7
+??#?????????.#.?? 7,1,1,1
+#??#??..#??. 6,1
+??????#???. 2,1,1
+..?#??.??#??.?? 4,3,1
+?..????.?????###? 2,1,5
+.?..???#?#.??.? 6,1
+..###??#.?##?##.??#. 6,5,3
+??#?.????# 2,3
+??????#?#????##?? 3,1,1,5
+???????????? 4,3
+#??#??#??#?. 5,5
+??#???.##???????? 5,3,1,1
+??????#?????????# 8,1,2
+??#???##?????.#. 3,7,1
+.???#.#????????#.?? 3,10,1
+.?#?????#??.# 6,2,1
+?.#??#####???..? 1,1,9,1
+?#..?????#?.?? 2,1,4,1
+?.?##?.?#?.?..? 1,3,1,1,1
+?##.#??#?..?##?####? 3,1,3,8
+.??#####?.?????# 7,4,1
+?????#?#?????? 1,1,1,7
+????#.#?????.??? 2,1,5,1
+??????????#?????#?? 4,1,1,4
+#???#???.. 2,4
+??##???.?##??? 5,5
+?.??##?.????..#.??? 1,1,3,2,1,3
+..?????.#?.?. 1,2
+?#??.?.?..#.? 2,1,1,1
+??.#.??#.?#. 1,1,1,1
+?#?#??#??##?????#?? 1,1,6,6
+...??##?###?.?? 7,1
+?#.?#????.. 1,3,1
+??.????#??? 1,1,4
+????##????????.??? 2,7,1,1
+???????###??#.? 1,1,1,6,1
+?.???#????# 1,5,1
+..?????#????????. 1,11
+?.?????#???###??.? 1,5,3,1
+.????.#?.##?? 2,1,2
+??.???###???????.# 1,1,4,3,1,1
+.??#??????? 3,2
+.?????#?????.????# 1,5,1,3
+?..#.????#??.?? 1,3,2,1
+.?????.???.#..??.? 3,1
+?#.?.????#??.???#?# 1,7,6
+.#???#??#?#??#? 11,1
+#.?????#?????## 1,7,2
+???#?##???#.???? 7,1,1,1
+?????#??#???? 1,9
+#?#??.???#????##? 3,11
+.#?#??????.?#??#??# 7,1,5,1
+??#?#????? 1,5,1
+????#????#.?.. 9,1
+?##.?.?.??.# 3,1,2,1
+??#?.?.??#??#?###? 2,1,1,1,1,3
+?.??..?#???##? 1,1,8
+#..#????#?.# 1,2,1,1
+#??.#??.??.?. 1,1,1,2
+??#??????#??#????##? 1,6,7
+???#???????#??. 2,1,5
+#???????#??. 1,3,4
+.?#?????????#?????? 1,10,1
+?????##?#??. 3,5
+???.?#???#?? 1,2,2,1
+#.?#?.?#?.?# 1,2,1,1
+????????????????.. 2,1,3,2,3
+??#???#.???#?#?? 4,1,6,1
+?.#?.????? 1,1,1
+.#?????.?##??#. 1,2,1,6
+#?##??#?.???????. 1,5,1,3,1
+?#..?#?.???#. 1,2,4
+??.????.?????#??# 2,1,1,6,1
+???#?????#? 3,1,1
+.#?#?#?.??? 6,1
+??##??????? 2,2,1
+#????#???? 1,1,4
+?#?.?#??????? 2,1,4
+??.???.##???#?#???? 1,1,1,9
+????#?.??####? 1,1,6
+#??##????.????#. 9,2,1
+?#?????.?# 1,1,2
+?.#?????#??# 1,1,2,4
+?.??#??###??#..#? 1,9,2
+?#??.?.?#?.? 2,2
+???.??.??#? 1,1,1
+?#??...#????###?#?? 3,11
+?????##??#??#??# 1,1,6,1,2
+????????.#? 2,1,1
+??#?.??..#?##?.??. 1,1,1,5,1
+..?#.?.???. 1,2
+??###.##??? 1,3,4
+???#?#..???????# 6,1,2,1
+?.?.?????##?#?????. 9,2
+.???##.?.. 1,2
+?.????????##?. 1,4,1,3
+?.????.##?????? 1,1,1,5,2
+.??????##??#?#???? 1,9
+?.#.???##??????? 1,1,1,4,4
+.?#????#????. 2,3
+.?.?##????.? 1,3
+#?.?#??#?.?..??#??#? 2,4,1,3,1
+??#????####?? 2,8
+?.??#????????##?? 4,4
+.##..????? 2,1
+#????#????.??.? 1,4,1,1,1
+#?#??????.??###?#??? 1,1,1,1,8
+??.?#??#??????? 2,1,5,1
+..?.???.??????? 2,3
+?.????.?#???.?#?? 1,2,5,2
+.#?????#?.?? 7,1
+?#??.?????#?????#? 4,1,4,2,1
+????#..???. 3,1,1
+????##????#?#??#??? 1,3,9
+.#??#??.?????#? 5,2,2
+?#?..???#?? 1,4
+???##?.?????#???#. 5,8
+###?.?????? 3,3
+?..???#?.#??#.??#.? 1,4,2,1,3
+.?.?????#???? 1,3,1,3
+?##?????????#?#??.. 3,1,8
+??#?#??#????.? 4,2,2
+#?????.#????#?#???#. 1,1,1,12
+.??##????????.#??#? 10,4
+#????.???.#?.##??#?? 1,3,1,2,2,2
+#?????.?#.??? 4,1,1,3
+.#??.??#?????##??#? 3,11
+?.?????.??.???##? 1,2,5
+.???.#??#??? 2,6
+.????.?.#? 4,2
+??##??????.#?#????. 8,3,1
+.##??.?##?#??#??? 3,8
+##.??#??..? 2,2
+??.???#?####? 1,1,8
+..???#??.???????###? 4,1,8
+?????????#??????? 1,13
+?.#??????#???#.?? 8,1,1
+.??###??#??????# 1,6,1,1,1
+????..??#??? 1,1,3,2
+#??.???????. 1,3,1
+?#?##???#?#?? 9,1
+????#???#.?#??#?#??? 7,5,3
+??.????????????? 1,1,1,5
+??..????????#??.?? 1,1,6,1,1
+.??????.#???? 3,1,2
+?#???.#?#???.#??? 3,5,3
+????????#??####?#? 4,11
+??#??#???? 6,2
+.#?????#??.??.???.?? 9,1,1,1
+????.#?#?.???? 4,1,1,4
+#?????????.? 2,1,2,1
+.###?????# 6,2
+????????????#??##??# 1,1,5,5
+??.??????. 1,3
+??#??????##?#?? 1,1,1,1,5
+?.#???????#?? 1,3,5
+????????.###???? 1,2,1,7
+.??#????#???..#?# 2,5,3
+???##??##?#????????? 1,9,2,3
+#??##??????..?? 1,6,1,2
+??????.?.????? 3,1,1,2
+??????????????? 9,2,1
+.??????#.??.??# 1,1,1,1,3
+??????#???##?###??# 1,1,1,11
+???????????.#???.?#? 4,2,1,1,1,2
+?.???????#????#? 6,2,1
+#?#??????????##. 3,2,5
+.?.#??.?????.???#??? 3,3
+??..??.?##??#? 1,1,3,1
+?#???#????.???.?? 8,1
+#.??.?????.##???.? 1,2,1,1,5
+?.??#?.?###? 3,3
+..????????? 3,1
+????#..?#? 1,1,1
+?#?????????? 2,1,1,1
+???#.?#?..?.?#? 2,2,1
+..#?????.?. 1,2,1
+?.#????#?????#?.? 8,3
+?????????#?????. 2,1,1,1,2
+???#?##????? 1,4,1
+????.?#?#????.?#? 5,2
+.??#???###? 3,5
+.#?.?.??#??##. 1,1,6
+.?..?#????..????? 2,1
+.?#.##???.?#?. 2,5,1
+#.????.#???#?#. 1,3,1,3,1
+.?.?????#?###?## 1,1,6,2
+?#?????.??????.? 4,1,3,1
+??#??.#??.? 5,2,1
+?.???.??.???#? 3,1,1,1
+???.???.??????#??? 2,6
+??.?##??#???## 7,2
+??.????#??.??#? 5,3
+#??####???????.? 12,1
+?.???#??#?#?#?# 2,10
+???.?????#???. 1,1,9
+??.???##????#?#? 1,10,1
+???.???.???#.. 3,4
+.?#?.??#?#...????#.? 2,2,1,3,1
+.????#?.?????#?# 1,3,2,4
+???##????????????#?? 5,11
+?##?????#??????? 6,2,1,1
+??#.????#?#??#? 1,6,1
+???????.?#? 1,3,2
+???#???.??##?#?. 1,2,2,4
+#????##???.???.. 10,2
+##.??????. 2,1,3
+.??????.???.??.#??# 1,3,1,2,2,1
+#?.???####??#?#??. 1,11
+????#?????#?.? 3,5
+??????#???#??.??? 1,5,3,1,2
+..???.??##??#???. 3,2,2,1
+#?#.#?????#??#??# 3,10,1
+.???##?##?????#?.. 5,9
+?????#????#.? 1,4,1
+###??#???#? 3,1,2
+?.?????#?#????#?? 1,14
+?#??#???????#?????#? 1,1,1,2,5,2
+???#????.?.? 2,2
+???##????##????? 11,2
+??#.???.?. 3,2
+??##??##??.#??. 8,1,1
+??.?????#?? 1,2,1
+.#?#.#??????..#. 3,1,1,1,1
+???####?#.???#?#. 1,4,1,1,4
+#?????##?#..???? 1,6,1,1,1
+.#?????.?? 1,1,1
+???#?#???#?#?#.#??#? 6,1,1,3,4
+.???##??????##.?? 3,5
+##???#??.???????## 3,2,1,1,1,2
+?..##?????? 1,2,3
+????##??.?##??.???? 4,4,3
+##?#?.?.?.??.? 2,1,1,2
+?..??.#?.???#. 2,1,1,1
+??????.?#???? 1,1,4
+????.?????#????? 1,9
+.???#??#????#???? 1,10,1
+?.?#?.?.???#?.???# 1,1,2,2,3
+#???..?#.#.#?#?.?? 1,2,2,1,4,1
+??????.?.??????? 2,2,1,1,1
+?####?#.##?.?#?. 5,1,3,1
+.?????#??? 1,5
+??.#???#.??# 2,2,2,2
+??#????..???# 2,1,4
+????.?#???#?? 2,2,2
+#?#??#?##?#.???.? 1,9,1,1
+#??????????###?? 1,1,2,1,5
+.?????##??..?# 6,2
+..#?????#???.#?.??? 2,4,1,1
+??.???#??#?????# 1,2,10
+??#???????.#? 3,2,1,2
+?????????.???#?? 2,1,3
+?#?.???????#???.#? 1,1,7,1,1
+????.??#?.?.? 1,4
+###?????#???????.? 6,1,1,4,1
+????.##???. 1,2,1
+??.?????.# 1,1,1
+.??.???.?? 1,1,1
+???#????????.##?.?? 1,2,5,1,3,1
+???????.??????? 1,1,1,2,1
+??#.????.. 3,1
+.??##????#.#???? 9,2,1
+???#.???#???#??. 1,1,1,7
+??????.#??.? 1,1,1,1
+?##..??###??#?#?..? 2,1,9
+??.??#.###???# 1,2,4,2
+????????##. 2,4
+??##.???#??? 3,6
+?????#.?#???? 2,2,5
+#???.??.??#.# 3,1,1,1
+.??..##.??. 1,2,1
+???#.???????? 2,1,1,2
+????#?.?#?#? 1,2,2,2
+???????.?.??#???. 5,5
+???#??????#??#???? 1,2,1,2,3
+?#.?..???#??#??.???. 2,1,9,1,1
+????.#?#.???? 2,1,3,1
+#.??##???..#? 1,6,1
+?????#???????## 8,2
+??.??..?#???.?? 1,1,2,1,1
+????.##???.?.?##? 2,5,1,4
+?#?#?..?????#?? 1,1,5
+?##??????#?? 2,4
+#.?????#??.##????.# 1,5,1,5,1
+?##?.???.? 3,2
+?##?#????#???.??? 12,1
+?..?????## 1,7
+?#?#??????#?? 1,9
+?.#??##???.????? 1,4,3,1
+?###??????? 3,1,2
+??????.??. 1,1
+???.??#??#??#?.#. 2,5,2,1
+?.??????.? 2,1
+.?#???????????? 2,3,1,2,1
+.??.?.??????? 2,1
+.?#.???#?????#??.? 1,9
+??????#??.# 5,2,1
diff --git a/day12/main.go b/day12/main.go
new file mode 100644
index 0000000..cf03a1d
--- /dev/null
+++ b/day12/main.go
@@ -0,0 +1,122 @@
+package main
+
+import (
+	"bufio"
+	_ "embed"
+	"fmt"
+	"slices"
+	"strings"
+
+	aoc "go.sour.is/advent-of-code-2023"
+)
+
+// var log = aoc.Log
+
+func main() { aoc.MustResult(aoc.Runner(run)) }
+
+type result struct {
+	valuePT1 int
+	valuePT2 int
+}
+
+func (r result) String() string { return fmt.Sprintf("%#v", r) }
+
+func run(scan *bufio.Scanner) (*result, error) {
+	var matches []int
+
+	for scan.Scan() {
+		text := scan.Text()
+		status, text, ok := strings.Cut(text, " ")
+		if !ok {
+			continue
+		}
+
+		grouping := aoc.SliceMap(aoc.Atoi, strings.Split(text, ",")...)
+		pattern := []rune(status)
+		missing := countQuestion(pattern)
+
+		s := spring{pattern: pattern, grouping: grouping, missingNo: missing}
+
+		matches = append(matches, s.findMatches())
+	}
+
+	return &result{valuePT1: aoc.Sum(matches...)}, nil
+}
+
+type spring struct {
+	pattern   []rune
+	grouping  []int
+	missingNo int
+}
+
+func (s *spring) findMatches() int {
+	matches := 0
+	for _, pattern := range s.genPatterns() {
+		pattern := []rune(pattern)
+		target := make([]rune, len(s.pattern))
+		i := 0
+		for j, r := range s.pattern {
+			if r == '?' {
+				target[j] = pattern[i]
+				i++
+				continue
+			}
+			target[j] = r
+		}
+
+		if slices.Equal(countGroupings(target), s.grouping) {
+			matches++
+		}
+	}
+
+	return matches
+}
+func (s *spring) genPatterns() []string {
+	buf := &strings.Builder{}
+	combinations := aoc.Power2(s.missingNo)
+	lis := make([]string, 0, combinations)
+	for i := 0; i < combinations; i++ {
+		for b := 0; b < s.missingNo; b++ {
+			if i>>b&0b1 == 1 {
+				buf.WriteRune('#')
+			} else {
+				buf.WriteRune('.')
+			}
+		}
+		lis = append(lis, buf.String())
+		buf.Reset()
+	}
+
+	return lis
+}
+
+func countQuestion(pattern []rune) int {
+	count := 0
+	for _, r := range pattern {
+		if r == '?' {
+			count++
+		}
+	}
+	return count
+}
+func countGroupings(pattern []rune) []int {
+	var groupings []int
+	inGroup := false
+	for _, r := range pattern {
+
+		if r == '#' {
+			if !inGroup {
+				groupings = append(groupings, 0)
+			}
+
+			inGroup = true
+			groupings[len(groupings)-1]++
+
+		}
+		if inGroup && r != '#' {
+			inGroup = false
+		}
+	}
+	return groupings
+}
+
diff --git a/day12/main_test.go b/day12/main_test.go
new file mode 100644
index 0000000..3ea209f
--- /dev/null
+++ b/day12/main_test.go
@@ -0,0 +1,70 @@
+package main
+
+import (
+	"bufio"
+	"bytes"
+	"testing"
+
+	_ "embed"
+
+	aoc "go.sour.is/advent-of-code-2023"
+
+	"github.com/matryer/is"
+)
+
+//go:embed example.txt
+var example []byte
+
+//go:embed input.txt
+var input []byte
+
+func TestExample(t *testing.T) {
+	is := is.New(t)
+	scan := bufio.NewScanner(bytes.NewReader(example))
+
+	result, err := run(scan)
+	is.NoErr(err)
+
+	t.Log(result)
+	is.Equal(result.valuePT1, 21)
+	is.Equal(result.valuePT2, 0)
+}
+
+func TestSolution(t *testing.T) {
+	is := is.New(t)
+	scan := bufio.NewScanner(bytes.NewReader(input))
+
+	result, err := run(scan)
+	is.NoErr(err)
+
+	t.Log(result)
+	is.Equal(result.valuePT1, 8193)
+	is.Equal(result.valuePT2, 0)
+}
+
+func TestPower2(t *testing.T) {
+	is := is.New(t)
+
+	is.Equal(aoc.Power2(1), 2)
+	is.Equal(aoc.Power2(2), 4)
+	is.Equal(aoc.Power2(3), 8)
+	is.Equal(aoc.Power2(4), 16)
+	is.Equal(aoc.Power2(5), 32)
+	is.Equal(aoc.Power2(6), 64)
+}
+
+func TestCountGroupings(t *testing.T) {
+	is := is.New(t)
+	is.Equal([]int{1, 3, 1}, countGroupings([]rune(".#.###.#")))
+	is.Equal([]int{1, 3, 1}, countGroupings([]rune(".#.###...#.")))
+	is.Equal([]int{1, 3, 1}, countGroupings([]rune("#.###...#.")))
+}
+
+func TestCombination(t *testing.T) {
+	s := spring{
+		pattern:   []rune("???"),
+		grouping:  []int{1},
+		missingNo: 3,
+	}
+	s.findMatches()
+}