summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--day5/input846
-rw-r--r--day5/main.py18
-rw-r--r--day6/input2165
-rw-r--r--day6/main.py24
5 files changed, 3054 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bee8a64
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+__pycache__
diff --git a/day5/input b/day5/input
new file mode 100644
index 0000000..05530c3
--- /dev/null
+++ b/day5/input
@@ -0,0 +1,846 @@
+FFBBBBBLLR
+BFBFBBBRLL
+FBFFFFBLRL
+BFFBFBBRLR
+FFBBFFFRRL
+FBFBFFBLLR
+BFFBFBFLLR
+BFFBBBBRRL
+FBBBFBFLRL
+BFFBFBBRLL
+FFBBFBBRRR
+BBFBBBBLRL
+FFBFBBFLRL
+BBFFFBBLLR
+FFBBBFFRLL
+FBFBFFBLRL
+BFFFBFBLRL
+FFBFBFFRRL
+BBBFFFBRRR
+BBFFBBFLLL
+BFBBBFBLRR
+FBFBFFBRRL
+FFFBBFBLLR
+FBBFBFFRLR
+FBFFFFBRRL
+BBFFFFFLLR
+BFBFFBBLLR
+FFBFBBBRRR
+FFBBBBBRLR
+BBFFBFFRLR
+BBFBBBBRRL
+FFBFFFFLLL
+BBBFFBFRRL
+FFBFFFFLRR
+FBBBBBFLLR
+BFBFBBBLRL
+BFBBBFFRRL
+FBFFBBFRRR
+BBFFFFBRLR
+FFBFBBFRLL
+FFBFBFBLLL
+FBBBFBFRRR
+FFFBBBFRLL
+BFFFBBBLLR
+FBFFBFBRLR
+FFBFBBBLLL
+BFBBBFFLLL
+BFFBFBFLRR
+BFFBFBBRRR
+BFBBBFBLLL
+FBFFBFFLRL
+BBFFFBBRRL
+FFFBFBBRLR
+BBFBBBFLLR
+FFBBBBBLRR
+BFFFFBFRRL
+BFFFBBBRLR
+BFBBBBBLLR
+FBFBBFFRRL
+BFFBFFBLLR
+FFBBFFFRLR
+FBBFFFBLLL
+FFFBBFFLRR
+BBFFFFBRLL
+BFFFFFFRLR
+BFFBBBFLLR
+BFBBBFBRRL
+FBFBBFFRRR
+BFBFBFFLRR
+BBFBFFFLLL
+BBBFFBFLLL
+FFBBFBFRRL
+FBBFFFBLRL
+BFBBBBFLLR
+BFBFBBBLRR
+BFBBBBBRLR
+BFFFBFFRRL
+BFFFBFFLLL
+BFBBBBBRLL
+BBFFBFBRLL
+FBBBBBFRLR
+BBFFBFFLLR
+FBBFFFFRLR
+FBFFFBFLRL
+BBFBFBBRLR
+BFFBBFBRRL
+FBFFFFFRRR
+BFBFBBFLLL
+FBBFBBFRLR
+BFBBFBBRRR
+FFFBBBFLRL
+BFFBFFBRRL
+FBFBFBBLLR
+BBFBFFFLRL
+FFFBFBBRRR
+BBFFBBFRRL
+BFBFBFBLRR
+BFFBBBBRLR
+FBBFFFFLLR
+FBBBFFBLLR
+FBBBBFFLRL
+FBBBBFFLLL
+BBFFBBFRLR
+FFBBFBFLRL
+BFBFFBBRLL
+FBFBBFFLRR
+BFFFFFBRLL
+BBFBFBBRRL
+FBBBBBBLLR
+BBFBFBFLLL
+BFFFFBBRLL
+BFBFFBFRRL
+FFBFFBFLLL
+BFFFBFBLLR
+FBBFBFFRRR
+FBBFFBFRLR
+FBBFBFBRRR
+FBFBBFBRLR
+FFFBBFBRRL
+FBBBBFBLRR
+FBBFBBFLRR
+BBBFFBFRRR
+BFFBBBBLLL
+FBFBFBFLRL
+FFBFFBFLRL
+FFFBBFBLLL
+FBBFFBFLLR
+FBBBFBBRRR
+FBBBBFBRLR
+FBBFFFFRRR
+FFFBFBFLLR
+FFBFFFFRRR
+BFBBBBFRLR
+BFFBFBFRRR
+BBFBBFFRLL
+BFFBFFFLLR
+FBBBFBBRLL
+BBFBFFFRRR
+FFBFBBBRRL
+FBBBFBFLLL
+FBBBFBBLRR
+BFBFBBFRLL
+BFBFBFBRLL
+FBFFBBBLRL
+FBBBBFFRRL
+BBFFBFBRLR
+BBFFBFFRRR
+FFFBFBFLRR
+FFFBFBBLLR
+FBBBFFFRLL
+FBFBBBFLLL
+FBFBBFFRLL
+BFBBFFBLLR
+FFBFFFFRLR
+BFFFBBFRRL
+BFBBFBFLLL
+FBFFFBFLLR
+BBBFFBFRLR
+BFFBBFFLLL
+FFBBBBBRRL
+BBFFBFBLLL
+BFFFBFFLLR
+BBBFFBFLRL
+BFBFFBFLLL
+FBFFBFFRLR
+FFBFBBBLRL
+FBBFBFBLLR
+FBBFBBFLRL
+FFBBFFBLRL
+FFBBBBFRLR
+FFBFFFFRLL
+FFBBBFBRLL
+BFFFBBFLRL
+FFFBBBFRRL
+BFBFBFFLLR
+FFFBFBFRLR
+BBFBFBFRLR
+FBBBFFBRRL
+FFBBBBFLLL
+FFBBFFBRLL
+FBBFFFBRRR
+FFFBBBBRLL
+FBFFFBFRRR
+BFBBBFFLLR
+BBFBBFBLRR
+FFBFBBBLLR
+BFBFBBBRRR
+BBFFFBBLRR
+FBFBFFBLRR
+FFFBFBBLLL
+FFBFFBFRRL
+FFFBFBBRRL
+BFBBBFBRLL
+BFBFFFFLLL
+BFBFBBBRRL
+FFFBBFBRLR
+BBFBBBBRLL
+FBFBBBFLRL
+FFBFFBFRLR
+BFBBBBFLLL
+FFBBBBFLRL
+BFFBFBFRRL
+BFFFBBFLLR
+BFFFBBFRRR
+BFBFBFBLLL
+BFFFFFBLLR
+BFFFBBFLLL
+BFBBBBFRRL
+BBFFBBFLRR
+BBBFFFFLRR
+FFBFBFFLLR
+FBFFBFFLLR
+BFBFFFFRLR
+FFBFFBFRLL
+FFBFBFBLRL
+BFFBBFFRRR
+BFFFBBFLRR
+FBFBFBBLRL
+BFFBFFFLRL
+FBFFBBBLRR
+FBBFFFFLRL
+BBBFFFBLRR
+FBFFFBBRLL
+BFBBFFFRLL
+FFFBBBBLRR
+BFBBBBBRRR
+FBBBBBFRLL
+BFBFFBBRLR
+BFFFBFFLRL
+FBFBFBFRRL
+FBFFBFFRRR
+FFBBFFBLRR
+FFBFFBBRLR
+FBBBFFFRLR
+BFFBBBBLRR
+FBFFFFBLRR
+BFBBFFFLLR
+FBFFBBBLLR
+FBFFFBBRRR
+BFFBFBBLLL
+FFBBBBBRRR
+BFBBFFBRRR
+FBBBBBBRRL
+BFBBFBFLRR
+BBFBFFBRLL
+FBFFFFBRLL
+BFBFBBFLRL
+BFBFFFFLLR
+BFFFBBBLRL
+BBFFFFFRLL
+BBBFFBBRLR
+BBFBBFBLRL
+BBFBFFBLLR
+BBFBFBFLRR
+FFBBFFBRRL
+FFBFBBBRLR
+BBFFFFBRRR
+BFBFFFBRLR
+BBFFFFBLLR
+BBFFBFFLRR
+FBBFBFBRLR
+FFBBBFFLRR
+BFBBFFBRLL
+FBFBBBBLLR
+FBBFFFBRLL
+FBBFFFBLRR
+FBFFFBBLLR
+BBFFFBBRLL
+BBFBBBFRRR
+FFBBFFFLLL
+BFBBBFFRLR
+BFBBFBBRLL
+BFFFFFBLRR
+BFBFBFBRLR
+BFBFFBFLRL
+FFBFBFBRLL
+BBFFFBFLLR
+FFBFBFBRLR
+FFFBBBBLLR
+FBFBBBBRRR
+BBFBBBFLRL
+BBFBBBFRRL
+FBFFBBFLLR
+FBFFBFBLRL
+BBFBBFBRLR
+BFFFFBBRLR
+BBFFFBFRLL
+BFBFFBBLRL
+FFFBFBBLRL
+FFBBBBFLLR
+BBFBBFBRRL
+BFBBFBFLRL
+BBFFBBFLRL
+BFBFFBFRLL
+BFFFFBBRRR
+BFFFFBFRLL
+FFBBFFBLLL
+BFBBBBBLRL
+FBBBFFBRLL
+FBBFFFFRLL
+BFFBFFFRLR
+BFBBFBBLRR
+BBFBFFBLRR
+FBBBBBBLRL
+BBBFFFFLRL
+FFBBFBBRLR
+FFFBBBFRRR
+FBFFFFBRLR
+BBFFFFBLLL
+BFBBBFBRRR
+FFFBBBBLRL
+FFBFBFFLRR
+BBFBFBFLRL
+BFBBBBBLRR
+BBFFBFBRRL
+FBBFBBFRRL
+BFFFFFBLRL
+FFBFBBFLLL
+BFFBBFFLRL
+BBBFFFFLLR
+BFBFFBBRRL
+FBBBBFBLLL
+BBFFBBBLRL
+FBFBFFFRLR
+FFBBFFFLRL
+BFFBBFBRLL
+FBBFBBFRRR
+FBFBBBFRRR
+BFBFBBFRRL
+FBBBFBFRRL
+FBBBBBBRLL
+FBFFFFBLLR
+FBFBFBBRRR
+BFBBBBFRRR
+BBFFFFBLRL
+BFBBFBBLRL
+BFFBBFBRLR
+BFFBFBBLLR
+BFFFBBBRLL
+FBBFFBFRRR
+BFFBFBBLRR
+FFBFFFFLRL
+BFBBFBBRRL
+FBBBFFFLRL
+FFBFBFBLRR
+FBFFFBBLLL
+FBBFFBBLLL
+BFBBBBBLLL
+FFBBBFBRRR
+FBBBBBBLLL
+FBFFBBFRLR
+FBFBBBBLRR
+FFBBFFFRRR
+BBBFFBBRRL
+FBBBFBFRLL
+BFFFBBBLRR
+FFBFFBBLRR
+BFFBBFFRLL
+BFFBBBFRLL
+BFFBFFFRLL
+BFFFFFFLLR
+FFBFFFBLLL
+FBBFBFFRRL
+FFBBFBBLRL
+FFBBBBFRRL
+FBBBFBBLLR
+FFBFBFFLRL
+FBFFBFBLRR
+BFBBFFBLLL
+BFFFBBFRLL
+FBFFBBFRRL
+BFFBFBBLRL
+BFFFBFBRRR
+FFFBBBFLLL
+BBFFFFFLRR
+BBFFFBFLLL
+FBFFFFFRRL
+BFBFFFFRRR
+FFBFFFBLLR
+FFFBBFBLRL
+FBFFFBFLLL
+FBBBBFBRRR
+FBBFFFBRRL
+FBBFFBFRLL
+FBBBBFFRLL
+BFBFFFBRRR
+BFBBBFBRLR
+FBBBFFBLLL
+BBFFFBFLRR
+BFBBFFBRRL
+BBFBBBFRLR
+BFFFBFFRLR
+FBBBFBFLLR
+FBFBFBFRLL
+FBFBBBFRLL
+FFBFFBBRLL
+FBFFFBFRRL
+BBFBFFBRLR
+FBFFFFFLRL
+BFFBBBFLRL
+FFBFFBBLLL
+FFFBFBFLLL
+BFBBBFFLRR
+BBBFFBBRLL
+BBBFFBFRLL
+FBBFBFBLLL
+BFBFFFFRLL
+FBFBFFBRLR
+FFFBBFBRRR
+FBBFFFBRLR
+FFFBBBFLRR
+BFBFFFBLLR
+BFBBBFFRLL
+BFBBFFBRLR
+BFFFFBFRLR
+BFFFFBBLRR
+BBBFFFBLRL
+FBBBFFBRRR
+BFBBFFFLRR
+FBBBBFBRLL
+BBFFBFFRRL
+FFFBBFFLRL
+FBBBBFFRRR
+FBBFBFFLRL
+BFBBFBFRLL
+FBFFFBFRLL
+FBFBBFFLLL
+BFFFBBFRLR
+BFFFBFFLRR
+FFFBFBFLRL
+FBFFFFFRLL
+FFBFFFFRRL
+FFBBFBFLRR
+FFBFBBFRLR
+FBFBFBFRLR
+FBFBFFFRLL
+FFBFFBFLRR
+BFBFFBFRLR
+BFFBFFFLRR
+BBFBFBBLLR
+FBFBFBBRRL
+BFFBBBBLRL
+BBFFBBBRRR
+FBFFBBFRLL
+BFFFBBBRRL
+FBBFFFBLLR
+BFFBBFBLRR
+BFBBBBFLRL
+FBFFBFBLLR
+BFFBFFBRLR
+FBBBBBFLRL
+FBFFFBBLRL
+BBFBFFFRLR
+BFFBFFBLRL
+FBBBBFBLLR
+FFBBFFFLRR
+BBFBBFBLLL
+BBFFFBBLLL
+FBBFBBBRLR
+FBBFBBBLLR
+BFFFFBFLRR
+FBBBFFBLRR
+FBFBFFBRLL
+BFFBBBBRRR
+BFFFFFFRLL
+FBFBBBBLRL
+FFBFBBFLLR
+BFBBFBBLLL
+BBFBFBBRRR
+BFFFBFBLLL
+BFBBFFBLRL
+FBBBFFFLLR
+FFBFFBBRRR
+BBFBBBFRLL
+FBBFBBBLLL
+FBFBBBFLRR
+BFBBFBFRRR
+BFFFBFBRRL
+BBFFBBBLRR
+FBBFBFFLRR
+BFFBFFBRLL
+BFBFFFBLLL
+BBFBBBFLLL
+BFBBFFFRRL
+FFBFBFBRRR
+BFFBBFFRRL
+BFFBFBFRLR
+FFBFFFBRRL
+BFFFBFBLRR
+FBFBFFBLLL
+FBFBFBFLLR
+BFFBBBBLLR
+FBBFFBBLLR
+FBBFFBFLLL
+BBBFFFBRLR
+FBFFFBFRLR
+BBFFBFFLRL
+BFBFBBBLLL
+FBFFFFBRRR
+BFFBFFBRRR
+FFBBBBBLLL
+BBFFFBFRLR
+BFFFFFBLLL
+FBFBFBBLRR
+FBFFBBBRRL
+FBBBBBFLRR
+BBBFFBFLRR
+FBFBFFFLRR
+FBBBBBBRRR
+BFFBBFBRRR
+BFFBFBFLLL
+BFBBFFBLRR
+BBFFBFFLLL
+BFFFFFFLRR
+BFFFBFBRLL
+FBFFBFBRLL
+FBFFBBBRLR
+BBFFBFFRLL
+FFBBFBBLRR
+FBBBBBBLRR
+FBBBBFBRRL
+BFFFFBBRRL
+FFBFFFBLRR
+FBBFBFFLLL
+BBFFFBBLRL
+BBFBFFBLRL
+BBFBFBBRLL
+FBFFFBBLRR
+BFBBFBBLLR
+FFFBBBFRLR
+FBFBFBBLLL
+FBFFFFFLRR
+BFBFBFBRRR
+FBBFBBBLRL
+BBFBBFBRLL
+FBBFFBBLRR
+BBFFBBBLLR
+FBBFFBBLRL
+FBFBFFFRRR
+BBFFFBBRLR
+BFFFFFFRRR
+BBFFBBFRRR
+FBFFBBFLRL
+FFBBFBFLLL
+FBFBFFBRRR
+BFBBBBFRLL
+FBBFBFBLRR
+FBFBFFFLRL
+FBBFFFFLRR
+BFBFBFFRRL
+BBFFBFBLRL
+FBFFFFBLLL
+FFBBFFFLLR
+FBBFBBBRRR
+FBBBBBBRLR
+BBFFFFFRLR
+FFBBBFFLLL
+FBBBBBFRRR
+BFFBFFBLLL
+BBFBBBBRLR
+FFBBFBBLLR
+FBFBFFFLLR
+FBBFBFFRLL
+FFBBFBBRRL
+FBBFBFBRLL
+FBBBBFBLRL
+FFBBFFBLLR
+BBFFBFBRRR
+BFBFFFFRRL
+BFFBFFFRRR
+FBFBBFFLLR
+FFFBBFBRLL
+FFBBBBFRLL
+FBBFBBFLLL
+FBBFFBFLRL
+FBFFBFBRRR
+FFBBBFBLLL
+FFBBBFFRRL
+FBBFFBFLRR
+FFFBFBFRRR
+FFBBFBFRLL
+BBFFBBBLLL
+FBBBFFFRRL
+BFBBFBFLLR
+BBFBFFBRRR
+FFBBBFBLRL
+FFBFBBBRLL
+FBFBFBBRLL
+FFBFFFBLRL
+BBFBFFFLLR
+FBFFBFFLLL
+FFBBBFFRRR
+FBBFBFFLLR
+BBFBFFBRRL
+BBFBBBBRRR
+FFBFFBFRRR
+BFBFBFFLLL
+BBFBFBFRLL
+BBFBFBBLRL
+BFBBFBBRLR
+FBFFBBBRLL
+FBBBBFFLRR
+FFFBBBFLLR
+BBFFFFBLRR
+BBFFFFFRRL
+FBFFBFFLRR
+BFFFFFFLLL
+FFFBBBBRRR
+BFFFBFFRLL
+FFBFBFFRLL
+FFFBBBBLLL
+FFBFFBBRRL
+FFBFBBFRRR
+BFBFBFBLRL
+FBFFFFFRLR
+BBFBFBFRRL
+FFFBFBFRLL
+BBBFFBBLLR
+FFBFBBFRRL
+BBBFFFFRRR
+BBFBBFFRRL
+FBBFBBBRLL
+FFFBFBBRLL
+FFBBBBBLRL
+FFBBBFFLLR
+BFBFFBBLLL
+BFFBBFBLLR
+BBFBBBFLRR
+BBBFFBFLLR
+FBBFFBFRRL
+BBFFFBFLRL
+FFBFBBFLRR
+BFBBBFFLRL
+BFFBFFFRRL
+BBFBBFBLLR
+BBFBFBBLLL
+BFFBBFFRLR
+FBBFFFFRRL
+FBFBFBFLRR
+BFFBFBBRRL
+FFFBBFFRLL
+FFBBBFBRLR
+FFBBBBBRLL
+BBFBFBFRRR
+FBBFBBFRLL
+BBBFFFBRLL
+BFFBBBFRLR
+BBFBBFFLLL
+FBFFBBFLLL
+BFFBBBBRLL
+BBBFFFBLLR
+BFBFFFFLRR
+FBBFBBFLLR
+FBBBFFBRLR
+FBFBBFBRLL
+FBFBFBFLLL
+FBFBBBFRLR
+BBBFFFFRLL
+FBFFBBFLRR
+FBBBFBBRLR
+FFBBBFFRLR
+BBFFBFBLRR
+FFFBBBBRRL
+BFBFFFBRRL
+BFBFBFBLLR
+FFBBBFBRRL
+FBFBBBBRLL
+BBFFBFBLLR
+FFBFFFFLLR
+FBBFBBBRRL
+FBFBBBBLLL
+BFBFFBFLRR
+FFBFFFBRRR
+FFFBBFFRRR
+BBBFFBBLRR
+FBFFBFFRRL
+BFFFBFBRLR
+BFFBBFFLRR
+FBBBBFFRLR
+BFBBFFFLRL
+FBFFFBFLRR
+FFBBFBFRLR
+FBBBFBFLRR
+BBBFFFBLLL
+BBBFFBBLLL
+FBBBFFFRRR
+BBFFFFFLLL
+FBBBBBFLLL
+FFFBBFFRRL
+FFFBFBBLRR
+FBBBBFFLLR
+BFBFFFBLRR
+FBBBFBBLRL
+BFBBBFFRRR
+BFBFFBBRRR
+BFFFFBFLRL
+BFBBBBFLRR
+BFFFFFFRRL
+BBFBBFFRRR
+FFBFBFFRLR
+BBFBBFFLLR
+BFBFBFFRLR
+FFFBFBFRRL
+FFBFFBBLLR
+FBFBBFBLLR
+BFBFBFBRRL
+FFBBFBFRRR
+FFBFBFBRRL
+FBBFBBBLRR
+FBBFFBBRLR
+BFFFFBFLLL
+BFBFFBBLRR
+BBFFFBFRRL
+BBFBBFFRLR
+BFBBFFFRLR
+FBFFFFFLLL
+BBFFFFBRRL
+BFBFBFFLRL
+BBFFBBFRLL
+BFFBFBFLRL
+FBFBBBFLLR
+FBBFBFBRRL
+FFFBBBBRLR
+BFBFFFBLRL
+BFFFFFBRRR
+BBFBFBBLRR
+BFFFFFBRRL
+BBBFFFFRRL
+BFFBBBFRRL
+FBFFBFBLLL
+FBBBFFFLLL
+FFBBBBFLRR
+FFBFFBFLLR
+BFBFBFFRRR
+FBFBBFBLLL
+BFFBBFBLRL
+BFFBBBFLRR
+FFBFBFFLLL
+BFFFBFFRRR
+FBFFFFFLLR
+BBFBBFFLRR
+FFBFFFBRLR
+BFBFFFBRLL
+BFFBFBFRLL
+FFBBFFFRLL
+FBFFFBBRRL
+BFFFBBBRRR
+FBFBBBBRRL
+FBBFFFFLLL
+FBBBFFBLRL
+FBFFBFFRLL
+FFFBBFFRLR
+BFBFBBFRRR
+BFBBFFFRRR
+FFBBBFFLRL
+BBFFFFFLRL
+FFBFBBBLRR
+BFFFFFBRLR
+FBBFFBBRLL
+FBFBBFFRLR
+FFBBBFBLRR
+FBBFBFBLRL
+FBBFFBBRRR
+FFFBBFBLRR
+BFBFBBFLLR
+BBBFFBBLRL
+BFFFBBBLLL
+BBFFFFFRRR
+FFBBBBFRRR
+FBFBFBFRRR
+FFBFBFFRRR
+FFBBFFBRRR
+BFBFBFFRLL
+BFBFFBFRRR
+BBFFFBFRRR
+BFFFFBBLLR
+FFBBFBBLLL
+FBFBBBBRLR
+FBFBBFBLRR
+BFBFBBFRLR
+FBBBFBBRRL
+FBFBFFFLLL
+FFBBFBBRLL
+BBFBBBBLRR
+FBBFFBBRRL
+BFBBBFBLLR
+FFFBBFFLLR
+FBBBBBFRRL
+BFBBFFFLLL
+BBFBBBBLLL
+BFBFBBBRLR
+BFFBBBFLLL
+BFBBFBFRRL
+BBFBFFFRRL
+FFBBBFBLLR
+FBFBBFBLRL
+BBBFFFBRRL
+BBFBFFBLLL
+BBFBFFFLRR
+FFBFBFBLLR
+BFBFFFFLRL
+BFBBBBBRRL
+BBFFFBBRRR
+BBFFBBFLLR
+FBFFBBBLLL
+BFFFFFFLRL
+FBFBFBBRLR
+FBBBFFFLRR
+BBBFFFFRLR
+FFBBFFBRLR
+BBFBFFFRLL
+BBFBFBFLLR
+BFFFFBFLLR
+FBFBFFFRRL
+BFFFFBBLLL
+FFFBBFFLLL
+BFFFFBFRRR
+FBBBFBFRLR
+FBBBFBBLLL
+BFFFFBBLRL
+FBFFBFBRRL
+BBFBBBBLLR
+BFBBBFBLRL
+FBFBBFFLRL
+BFBFBBBLLR
+FFBBFBFLLR
+FFBFFFBRLL
+BFFBFFBLRR
+BFFBFFFLLL
+BFFBBFFLLR
+BBFFBBBRLR
+BFFBBFBLLL
+FBFBBFBRRL
+FBFFFBBRLR
+BFFBBBFRRR
+FFBFFBBLRL
+FBFBBFBRRR
+BBFFBBBRRL
+FBFBBBFRRL
+BBFBBFBRRR
+BBBFFFFLLL
+BFBFBBFLRR
+FBFFBBBRRR
+BFBBFBFRLR
+BBFBBFFLRL
+BBFFBBBRLL
diff --git a/day5/main.py b/day5/main.py
new file mode 100644
index 0000000..b544b61
--- /dev/null
+++ b/day5/main.py
@@ -0,0 +1,18 @@
+"""Peter Norvig solution. Forgot to do day 5."""
+data = map(str.strip, open("input"))
+
+ID = int
+
+def seat_id(seat: str, table=str.maketrans('FLBR', '0011')) -> ID:
+ "Treat a seat description as a binary number; convert to int."
+ return ID(seat.translate(table), base=2)
+
+
+ids = [seat_id(x) for x in data]
+
+# Part 1
+print(max(ids))
+
+# Part 2
+[missing] = set(range(min(ids), max(ids))) - set(ids)
+print(missing)
diff --git a/day6/input b/day6/input
new file mode 100644
index 0000000..b47104b
--- /dev/null
+++ b/day6/input
@@ -0,0 +1,2165 @@
+syz
+cywjs
+jptzy
+pjkyr
+nhdbvyoqlxm
+
+sljgqfuvrkpzhbax
+balxvkgjquhzpsrf
+jghpasuerbfvlkxiz
+
+e
+phue
+eid
+ez
+
+igndfazbomyjkevwr
+bejkdvzmgnofirway
+afredowmyzgbnivjk
+
+jotunfx
+futnzbw
+etufn
+utznf
+fntu
+
+dsjwfhi
+dhfsvw
+wdfs
+fdkgsw
+wdvsf
+
+ijgowbynhxkcu
+amzpkdhyfesjuvt
+sqrjeyhluk
+
+j
+w
+j
+
+typfurv
+fzvytjurp
+
+hykudlvmcpsbxznojfgeiwt
+nscojvdpklgxbuiteyfmwhz
+etjnuicwbyzkfghvopdxslm
+bwijymcdnlfskphteougxzv
+
+pjhwa
+hwpj
+tpjdhw
+
+zvkyaju
+mcjygolzas
+aycjr
+qfwjypdabth
+yjacx
+
+kbxuaypqizegj
+qrdusglmiwzk
+wuirhkqtnzg
+
+tgxukmjqy
+kjgqutvpsny
+gtmukxqyj
+koyqjgtu
+joyugqtk
+
+pdbarxj
+obrd
+uwblcrdqehvz
+
+qyfgtumd
+qmyutgfz
+
+evcbwhr
+crxwevsyb
+ercbwvl
+
+mtzgbwydxpcnrefhiso
+hvaofetidsj
+ieqkuosthfd
+
+musaqnvctwokrb
+qbhcvswmnru
+csuqmwvnhbr
+
+idupje
+cue
+zuexbgyklofanmt
+
+niycgdemzftqohkxjvw
+epjmyoqvgwchzdkirntf
+vultgkmocbfqnzsijwye
+
+rqhwmocn
+mudblste
+
+blrnysadq
+aeudqyln
+rynuadq
+idytnaqox
+fqeaynd
+
+t
+t
+
+em
+e
+e
+e
+e
+
+chrtqlvosz
+rzyuqsh
+sjhzrqx
+
+yvxkiuzh
+ykohxvaustebi
+uxhykiv
+
+qrytxewpbg
+hjzeq
+aviqfuolc
+tpnxkqs
+
+vjexkoltifucpd
+uxcpetivdkjolf
+cjvuidfkoxtelp
+
+wnrebtkqhlayuopfzd
+bmdvgqhrfnlckxwte
+
+embvfqkcjw
+fmvsbewqck
+wbvkmceqhuf
+mvbfqeswckp
+bdqykvfiemcrw
+
+ayl
+atlkn
+xal
+
+tkernwq
+geqbkwnt
+qleufjwk
+tgqkywbe
+
+xmgefrvyoidupksl
+udkloxpyvmgefsir
+pkiefdgyvsxmurlo
+osplefyduxbgikrvm
+eprlsyxcgokdifvum
+
+pkbast
+skabtp
+qkpbtsa
+
+e
+k
+ul
+
+qgpf
+pgfq
+gqpf
+fsqpg
+
+p
+p
+p
+p
+vpg
+
+hpuzj
+iruzjhp
+
+cutnaobqd
+ouaemqbkldihvnw
+aynosbdurq
+ybaosqundp
+
+qzkxgbpcaetnhivrdfmlso
+meqpkbfxhdcyglsrvniotaj
+szaodencphwmbtvqgkxlirfu
+
+hfxpvgrwkjbiyuzqdma
+qxldczstri
+
+nd
+dn
+nd
+nd
+tbdghn
+
+nrsoyzhd
+weiytfodsbzvrh
+hyrnzdaso
+yrxhnzosd
+ozhrdnsy
+
+hrjxdpywcztauqsblvkmg
+fasuijxhbwtnzdqemvlprygkc
+
+kqiycjdz
+qkcjyzdi
+dzjkqicy
+
+tyanw
+wanty
+tynaw
+
+sqtvuz
+zuktspfd
+
+kxigyptofv
+tvrhyfpikxog
+pykitfxogvc
+oyxvpkiftg
+
+izrcupmlfkqndh
+ufkylmcasxzpegw
+fzqckmtuvpjl
+
+jhdbnoqzkgtscvmpaur
+nscihmtqpkrdbugjv
+
+vtpoqnki
+otugapkviq
+tipoykejxmdl
+
+dr
+vak
+
+ealopb
+kmwqeayux
+
+vkheapbqumslg
+mcaequkbvsgh
+evqkghbdmaus
+ebagokuhmqvs
+fdmvaqhkesgyub
+
+yofwljqmerabnguzsd
+rbmnszqaugwdlejyfo
+ezbomlasfjgnwdruqyt
+jfmdiyuslanrqowezb
+
+aicbx
+cnwigbf
+bicl
+
+awuniboelyxrd
+wodbxry
+kxordywb
+jybwoxrd
+pwdxbygor
+
+sdagzt
+dzgtsa
+gtsadz
+zagstd
+
+thbpazyrn
+znarbp
+bynzprta
+kzpdancrb
+hrapnzb
+
+k
+k
+k
+k
+
+rbgaxoeq
+qxhbro
+hoxqrbw
+xrowbq
+
+ezlkafdwc
+lewcdkzaf
+
+ejrpuy
+jreuy
+ykejufrc
+euyjqr
+
+chdmyqrtfnolje
+ljcmbhqfnyro
+
+bjfmhguenyzwpktoav
+hxduavymkfbrgpinetljwczoq
+unhowftgbaszypvkjme
+jztkbyweungmhopasvf
+
+xcfobayn
+wjr
+
+ljearbx
+eatubjrxl
+lxrbapjkce
+rbhjalzexo
+
+trqbedujx
+rzukegco
+
+ycmxrgj
+mjcgiq
+mxnpjgyc
+
+qdkctaripyowux
+jxpcudwtksoryaqil
+
+kt
+tk
+kat
+ktns
+
+uq
+uq
+uq
+uq
+
+lmgywjfvrckuxsbnhzetoq
+elqvnoycwujgrzmbkfxhs
+encbomlskxqjhuvygfrzw
+wcymolebjrqnxzvfkshgu
+shlrzunbqovwckxmgyfej
+
+ceuan
+dztenuy
+snuke
+
+nd
+d
+d
+d
+d
+
+rptbkixnfucvjlmgowaz
+unzkliovacfxjwgrmbtp
+mzcwksbvtgnoapfujlxir
+
+tkslmwavghnou
+qwjpzydxrbi
+
+lgmachyenvkpfxoit
+dieljkwmgfpchosqvnuz
+
+u
+u
+ub
+
+wkzr
+wmhjkzd
+
+htavjseluxn
+lvseutxhajn
+lehnasjxutv
+tasjxvhneul
+atsnelhvjxu
+
+vamlqrbzyfihe
+qhszxlkvibudc
+qlhgvijebpnz
+holbqwvzai
+
+byjcixm
+ciymjbx
+bcmyjxi
+bcrxmiyjg
+
+aewfthvkog
+gthswavof
+tagozvhkfe
+yofvghta
+vfloumqtxapgh
+
+wisnvaz
+vizhdsln
+sivgnakwz
+nzvxis
+
+es
+es
+se
+se
+se
+
+sqvpbdgocuhlefrmt
+squhdgbmcaolvrfetp
+dsfobvgmhquztrlpecn
+
+rlwmyhvzpxabdoskijq
+zywbdjokmxpihqgacs
+
+oms
+c
+g
+d
+d
+
+jixqoay
+ypjmqrotx
+qyondjxa
+
+wjburgmop
+owkbjrugpm
+bjlpudmhgxrowq
+
+otcxjzlvyisrb
+jryszblvc
+pyvczjblrs
+
+pegzbli
+ogsnqchy
+
+sofzdqjcrpvmthgx
+axveqfhcwzdg
+vcwxgdqfzh
+
+vda
+vad
+dav
+asxvdi
+
+gfehlqjy
+hsjyeqxgdf
+qzhefpgjtry
+
+cafujrdy
+jdpcuayofr
+
+fgjp
+f
+mfwnoz
+ifvckqtr
+sfb
+
+dxlsrficmtzayvknbwhop
+kwtrvdxlmhnpyisoczfab
+tkrifomzhslcbpayvwdxn
+cxlisywrtmnfdhbpzkaov
+ramwinblkpxczdyhvsoft
+
+w
+ez
+tmw
+t
+hc
+
+zguhfmxdvprqtcokanbw
+hrgkzxvwbdnftaqom
+itzjdrfyexvaqnbhmwlo
+
+ijkfnqz
+zjbrmdyh
+zji
+uqazjgk
+zqisja
+
+spwmx
+miwasb
+
+afmy
+pfmawg
+
+tkygwqvcxizs
+wicgsvtzxkqy
+ksvtxqiyzgwc
+wjtzgxiqkvysc
+
+kbdxunyhj
+jbcxuynkdh
+jydxukhbn
+
+qvkuhbl
+vbuhkql
+bhklvuq
+lbqkuvh
+kbqhluv
+
+evjcdtwqonfzghapml
+fdqazwpeykbcmh
+mdyebrzcphwfiqa
+
+ydoztvqa
+taozqvy
+tyozvaq
+
+zhxumnlojy
+ziotnuhay
+hcysuofzb
+vkeuorqpwzh
+
+la
+av
+
+wxdzyfbotpuemlghas
+lkirngcvw
+
+lwyisnkuxdmfe
+fymcbixvrselondjku
+xuqfksdylinme
+ienmydkfuxls
+mlxiywknsfduqe
+
+cm
+uc
+mc
+c
+acv
+
+ubyxf
+wsujbf
+wufbnj
+
+ezklg
+zaerkgl
+
+e
+xte
+e
+
+sympkv
+kmyvjrtps
+
+obzyuqveswl
+btyqvslur
+
+cfhk
+czhrxfn
+hclfj
+ckhf
+hfkc
+
+gmwnxkeiphadrbs
+fnpkiaqdwheorsbumcg
+ayimhrgwpdebkns
+ekisrwdgmxahnblpv
+wadnrhkbezsmjgpi
+
+ebjvmfxulygr
+wmxgyujeznlrbv
+uselxgjbvyr
+
+hrfiptwjxgbnv
+dujanfbiyghpcvr
+bpfjinrhgv
+jrfhimgpbnv
+
+cjilvoaryexmwktngbqdhpsz
+ivsndcklqbewgotyxmahpjrz
+rxdguelifotkqmbsvyawnjzphc
+tmaxosglwqdhpzicnbkjyver
+
+bsjdniyxwpruvgozcklmta
+eznluwcgxvsamtkdyi
+iszgwcntamdulxkyv
+
+yjpncrzw
+nkawcjzyp
+ykpncxwejz
+
+kpcbzjyuhsilraef
+uhqjzgpayslrkc
+agykjzlschpruw
+khuqcaprzylsj
+pzakgsnulrhcyj
+
+vlip
+plv
+pxvl
+lpv
+lvp
+
+kjbgdzhoasletq
+wqthoklasegbz
+
+quaprk
+uk
+
+vokcgaw
+gkrfvao
+kovgaf
+qvkago
+
+poyradmbht
+txfpuodbm
+itpdolbjemz
+pbtmygod
+
+wfl
+lgcw
+wul
+
+vcxsalqwri
+azwlrxosicvmq
+lisqvanxrcw
+ialcqrwvnsx
+
+wnxsmazobkpheyd
+sgdnbhkwapzymxeo
+epykhmsdxzobawn
+johwktpamfxbvsydcenqlz
+pswkbheaydnxozm
+
+axtzclequ
+cltzeu
+ybtzvfgrliceu
+elotcuz
+
+tmu
+mlut
+mtu
+uyvtmj
+mltu
+
+fljpx
+cfpy
+pfy
+fpc
+
+htiyf
+fthyi
+
+turzcikd
+itwbzdrku
+kiztrud
+yirznktdfu
+
+z
+z
+z
+z
+a
+
+tufogmyvxerq
+qzbg
+qzjdg
+ngqw
+
+ksxtv
+svkt
+vstkm
+sxcrktdv
+kstvqx
+
+slfapq
+ljsbpxmqa
+vephkzoyun
+
+geciwzs
+soa
+sci
+zps
+msndv
+
+axdzughpmblokjcrqiwveftsny
+xgiudrpzeyfanskqbhcwtmvolj
+
+uqmrdas
+zoshwvxc
+epalrsid
+
+sqk
+qs
+sq
+sq
+
+lvmr
+rlf
+xlrj
+lr
+lry
+
+wqr
+rcqw
+drfqya
+rq
+rcq
+
+wdnlsfpovaiu
+rgoytfuknjevpimdhwal
+awuplcnosfidv
+fvnploauidw
+xainldbwqvufspo
+
+winvacfeodrgkjpzl
+vnplxodwczkgjarfe
+lewdpjorngafzvck
+
+nbyejs
+fnwurdbsh
+cjnvbfgswaut
+plxkzqsomibn
+
+vdgtpesyhriaknlm
+knlsmrdypgheatv
+
+nrqetuizbvkmpya
+bnazcmetriksjy
+
+n
+l
+
+chvwfstei
+cnziqpe
+dlnczixe
+
+ydgepskimc
+mgecswpkdi
+idhpskcmeg
+kmpecsdig
+nsdmgkepic
+
+jvwsexc
+jxcswv
+vcswxj
+jsxvwc
+cwvsjx
+
+sgyouhwfvzpq
+wfypghszov
+swhovygpfz
+gvofpzwysh
+
+yvrznt
+ntbyrvz
+zvnxrwyt
+rvtynz
+
+ixgdbjeoqlmn
+rcgdxun
+sdgkhnx
+rknxwgacd
+yndgxz
+
+fnpilgyjembrqxk
+gmpbyjkqlxenri
+icbkejaqypurxlnmg
+shjnikrbympxlqeg
+lrjqkgymntpeibxdvo
+
+nujyfxlkozpvd
+kulhcpxzd
+iuzkpdlrx
+ahswkiclzqduxp
+
+msweqtzfacbvdlkjhrxoug
+mfglurkxteqowbshvjdzac
+omczrhjlexsvqufgtkwbda
+cjbohsxragqutzvldwefkm
+kcjgbzmhxvwadrlesftoqu
+
+kdmruzoveyjabln
+onkdyrauzbevm
+redbmzuaokvyn
+kabznyorvedum
+vkemobynrdzau
+
+aoqckjlsuwdhrn
+upthcqaxgrkynleb
+
+gubnvtkd
+kavmdil
+xkfnvd
+ukydvqnw
+vfkd
+
+zutixybwpe
+tewxmbu
+
+oah
+yn
+cw
+kc
+xklcyw
+
+xwynlbigvrqmsfcd
+yvcfmzxwiqsolgbu
+bwvghlipmxfsykcaeq
+ibsqvmygcxwlf
+bsmuicwjqflyrgxv
+
+oxsdje
+hqsoj
+kbgicsopun
+oqrws
+
+ljcmrwbqfku
+djifkmluwrzc
+yurcmzwfvjlk
+ngmwkaejfhtlrucsp
+
+vqtbgacyflsezk
+qoxfmjdrhtngw
+
+oamzed
+adzeom
+zmeoad
+ezmoda
+
+weylubormjzivhsqpgct
+bcixgodqwulpjystfrvh
+rfloistdwpvyqbjhguc
+hlktiogqjpvfbruwxycs
+ciphotjyvluqbwrsg
+
+kpbu
+pku
+
+nmhjfedrzipwg
+rpwavgjzmqie
+gpremizkwtyjq
+egiwmzjpbur
+
+yaojgdq
+qogday
+
+ylvduhestkqgbpf
+glbqzhtxkpovdw
+
+dtamfhxzql
+ylxmzfhaqud
+fzdqmahlx
+zkmdfxlpcahq
+
+petkohzrwvlxsif
+rtxfkhzioplesvw
+
+shabodwfmgkvlzpqyrjut
+tzmhkrlgqdbsjvaoufypw
+lfvwbptzmyjorkaghusqd
+amwytlpfhrvzogkudsjb
+wohfujyklvzmbastprgcd
+
+hrlnt
+ltnoh
+kxtlnh
+jhlntr
+nhtlz
+
+evci
+veic
+viche
+ciev
+viejc
+
+gqdtixovuraznwecfkmyphlsb
+gdlkqrspucwfxaozvynbethi
+lhirfcguoaskntdxewzqvbpy
+
+dbqwokayzmjpnsirvflgt
+kxfodwgqcvytaispnjlzu
+tdvpywlobgfjiaszknq
+
+qmzplaswfukgxj
+lagujfxmdokzwsqp
+gwlqkfsmxnjuazp
+
+pinzolyk
+hxodirpzy
+stbjaoqzpimy
+dokzyhperuil
+
+eolhkjwbm
+ewhbkmljo
+leobkjhmw
+jhobmekwl
+jowbhmkle
+
+zjrup
+oneukpjzr
+pujrwzy
+ruphaizj
+pujrz
+
+srzywptla
+pstyrazw
+szwyrapt
+tyaszprw
+
+gjzbyd
+kjwuydi
+yjd
+
+uvebw
+ouvbwe
+bvweu
+ewvub
+vbeuw
+
+reiblo
+joatibfewdm
+phybioue
+yvoiqxbre
+
+gnrpwk
+gdhbrenap
+gnxryp
+rnptwg
+
+xgnrhajdmyiocspqvktlbeu
+vlsmcjytqaedbigkxnpuhor
+ukdypvxjhrtowcqnmzliafsgeb
+sxjmtnqyebglprkdchaouvi
+
+evytnpjzfh
+nyejhzfvpt
+jyazwtvdmnfuphes
+tlnpjyfvhze
+
+xgimelbozhtrsucwdnjpqy
+mwcyqpnzosrudgjbilthxe
+mzrheyquxodcjwpilnstbg
+
+gcadv
+gmjc
+egno
+
+b
+b
+b
+b
+i
+
+hsdxn
+lfxmohe
+
+ap
+vbu
+cyzojmtgrd
+
+rpskiyjmt
+mirsjtkyp
+iprmkyjst
+
+dxlfprzhqest
+ldjyaqorsew
+dlrwbosjicqe
+
+qtco
+fqct
+
+axdforpgwmnhjiz
+ila
+lviya
+
+sioxbfd
+dfbsxoia
+bxisdof
+oxwdfbsi
+
+pjgdylotqerzhwmfunxaibk
+mfpnkzljiywocurgeqaxth
+
+cvwlxgndpi
+vkdjtwafyb
+vmswqyud
+
+ufaxtehdc
+chsefxakt
+thxdaefckw
+jxoqecfhtpinav
+dxtfmecshag
+
+lmroevtgif
+lvbohcnryg
+zvrxpodgsjlqa
+olvuygrt
+
+lgjokbmwxtys
+wjtocksgbmxy
+tsbcgkoxywmj
+jtcymsgkxwbo
+
+mldeqisr
+edrmis
+rmsdie
+reimsd
+
+apuckbmsyo
+uhoybksmf
+kbrytsqmu
+
+d
+dy
+djg
+d
+
+zfgxhiou
+ghfxziu
+xfhugzi
+gizuhfx
+iuzgxhf
+
+kbwtnusvmclyahqxj
+nkfdsbmucalwqoejhtvxy
+htjluqsxyanwkcmvb
+
+tfbv
+qftm
+fzlrt
+cktsfi
+zft
+
+snrdqy
+ydsnrq
+syrqnwdg
+nydrsq
+ayqndrs
+
+q
+d
+u
+d
+n
+
+guhxb
+bughx
+xughb
+uhbxg
+hxbuyg
+
+gabrmuo
+omgrb
+mndwfhr
+
+ixkbpemoywcn
+emhld
+erm
+me
+
+wv
+vw
+vw
+vw
+
+dtnbiuyhxecp
+rclypijnvxtudm
+znyamxplkdsuiwtvgc
+
+hqfb
+afqd
+fqh
+wbfq
+
+yqefgskdlrph
+hreglysdqcvfp
+
+ixjdocevurwfspzkgayh
+sxeukzhpifoycvjdga
+ghscfpkvzauyojeidx
+aoyshejvgucxdkzpfi
+jyvgekuzicdpaxfhso
+
+hovwxqicp
+vaticpfxwlkd
+qwrxpivjgce
+bixuwmocvqp
+xpwcvsim
+
+ildan
+lin
+nsitl
+lnuki
+uiln
+
+ckhuslgxfaowbeipqm
+idyszgafcvwtokblrxqeunpj
+
+sjkltbwnheoqxzgirfpdcmv
+verlgjbstidmckoxznqw
+cdswjxemlqayzbovgrnikut
+
+dqhlwxyacsigkvjbzfm
+gycalzimwhjdfvkb
+wdayflgmizcbvjhk
+vbgfimlazwjdkcyh
+cvhmawfjgldizbky
+
+gtjp
+mhkg
+hgk
+
+pzvm
+pvmz
+zmvp
+mvpz
+
+rjltyuqckx
+uxrzqtklcsjn
+clpbegkurzjqx
+qkiujmdfcrxlwhao
+rnqculvkjyex
+
+hgasf
+vmsh
+uhiyzxpn
+qvmh
+
+qgivh
+jhgv
+hgsv
+
+xlbhpizm
+pyanmsuvxowqz
+
+ihtefolb
+gfhqb
+fhgqb
+
+jnqbhfs
+fsjqhnp
+fjhqns
+fjhnsq
+
+ghmwzbq
+mhzgbw
+wzgmh
+mwgrzh
+vgwaemcntzh
+
+omqk
+mqok
+
+dyjlxicepnuorsqtwh
+uhrqiavsydzw
+ikuqyrdwahs
+hrfyguiswqd
+
+xhsrzgyem
+hqyig
+cytjigh
+
+noirtzelg
+intlegr
+
+hsep
+hqes
+shqe
+rseh
+
+fmucjbpvywogq
+dmocyqvufb
+mcqbfvoyu
+
+mhbukeptil
+lcaupsbntvkx
+
+chqdgx
+ltwvmjahyc
+zhpkrcb
+ucqeikhg
+qhgdcozn
+
+a
+wifv
+
+abdrfc
+arbcf
+afxbwcr
+fcabr
+
+zquedrsbivnfoatjxphkymgc
+bsyurfnmvizxotqcgpkajhe
+nxozqyepmjrscgtuhafbikv
+
+a
+a
+a
+a
+a
+
+y
+u
+u
+
+carzk
+ckqi
+zpncv
+dscxbgfymuwlj
+
+kpjnusmvhdq
+vqyshkupnd
+
+gotqj
+fqe
+qkp
+
+hiyonlukctbrgfmz
+ctlmgzyiubknorfh
+hcouytrkbfmzgnil
+nzrhbimgcykotufl
+tnbrkomfhgyzcuil
+
+jvufgqpc
+jvgpcus
+cjgpuv
+cjgpunrobvl
+gucqvkjp
+
+tz
+zt
+tnz
+tmvnz
+btxiez
+
+okgznb
+wnhjcuzx
+
+tbaferpgv
+gftvneparxb
+rgevfbatp
+
+fjwlbpnxycdgrzv
+cbtkdryflgwvpanjx
+bfvlrwdhzgxjpcny
+
+qokfcbj
+qojkb
+jqarnkb
+qcjkyb
+
+tkgzwopyibxq
+kzpwtvio
+
+wnprlkvqomtcgbxsiyz
+cdzikrqywolgntsx
+sijgxrtnczofuqylwh
+
+jkaqdgpn
+wgjnpkdqa
+
+hrja
+rha
+harz
+athdr
+huar
+
+jxsyg
+xvt
+
+oaqegwtd
+jwxgtdvsqoiab
+qkwogacfyut
+teowqidaxg
+owsatiqg
+
+redfl
+ldref
+ervfld
+
+kirzwbmdqpoe
+zdbwmoepqkir
+miwzepobdqrk
+
+e
+nhf
+
+unisztdlebk
+eavxpwjongyf
+xmchneqyrp
+
+mxdhq
+caxmfui
+sbtrkwp
+ixmglfzevdu
+
+ofqlipswjuhzrbeanmck
+mbjwiunezcfkvsaqxlpr
+nedajucswqgpibtylfzmk
+
+ctuiahbxomq
+aobumhi
+ahgofpwubim
+iohuabqm
+bkoemhiau
+
+lvfyzcadjusgmkwi
+kxygbiwumcjfznsdhae
+aujicfdzkgsmwyl
+zgcfujlakmiwyds
+
+j
+g
+v
+j
+
+b
+gmncbol
+bquhd
+bzd
+
+yzhosamrnwtixbvdq
+isxfljdebnwhrvzaqguocmt
+hbikdxznraymsoqwvt
+tiqrnxydbszvmwaoh
+vqwxsobtinmzdarhk
+
+s
+s
+
+gxfqkuir
+rsxfqiguk
+bqxdgkruimf
+ucgaoxfiqkr
+
+fzukydcojvsxw
+pqrgztjofchm
+
+ikgwrhtls
+rhigkwslt
+
+spgdumjioz
+bghmuilods
+mugiosd
+hsiugolmd
+
+pim
+pi
+ipgz
+pi
+
+wqushefymtxzvgloinrd
+rxmdlenqzwhyfgoustvi
+vinyzhlumosedqgrwtxf
+odqmrnlcxtgezhwyifusv
+nrevlhgqmywudtxsfioz
+
+h
+h
+h
+h
+
+pfskclxgveizyaodj
+mgavxjsyleckfopzid
+xsoijceldpgvyakzf
+axopyvsdijcklzfge
+
+zishdmnblckvpqye
+pqizehyblmkncsdv
+mpceqnvlkszydibh
+
+dwqcreikunghslypv
+klndcwrygiepqhvu
+ehyqvncdligprkuw
+iryeucxgdvlqkwphnz
+
+bpmsutfni
+btpfrinm
+itbqnfmpkw
+nptysfimub
+
+vxcefdhsjugn
+sdkyxctbiv
+
+fvqzbjasi
+sijazf
+fzpsjitan
+axzjergfsl
+fsztanj
+
+cahes
+csa
+usac
+sac
+sxnca
+
+glaonqujdpvkisfmzc
+iaevoucwryhxdbgfqtmj
+
+hvmnt
+thnvm
+mvhnt
+
+qszfwgedt
+ljwztmxspdb
+thgidzsw
+zidsvwt
+
+qstpeabrydm
+dpyfmqtrbhaes
+bsymtrpeadq
+
+oeaxlb
+oxleab
+
+kbxqpcgsvz
+klygqsbfpvc
+qncbsgkvop
+xpdvgkcbsmq
+skvgcbqp
+
+zeqmlrosafxtdphjvy
+wmdsknibv
+
+fj
+j
+
+orhlekyugfwdi
+ncptmbsq
+zjvxta
+
+incwxtqbrvhpgkje
+scbjtrmwkyhoaqivzgu
+nhctkvqigjwrbx
+tcvwhgdinjfrlkbq
+
+su
+rys
+su
+s
+
+vkgslpnrh
+hgv
+hvg
+
+nbluwkimxvpzcts
+mpbnwvkslxtizu
+xbmvtkwipulzsn
+
+stovbrhdje
+iftbzxdoresy
+rbodztse
+
+cjhszen
+hrfwuqs
+nshjcem
+hjdvtis
+
+vpayjhmsbqr
+qjayprbhvmw
+soajyphqmbrv
+hyjaprgqvmbi
+
+zcrolfeun
+bd
+xtbg
+kqjm
+tq
+
+pzk
+pkc
+tkpx
+psjqfk
+
+kf
+kf
+
+sflknxj
+kjnflsx
+sflxknjm
+
+xpjfwelovgack
+jawelcvoxgkp
+jvgkxpolaecwf
+cxgopvlwkeatjh
+
+dqueipokaltc
+mdgaiqtuwopcjef
+
+rovdesw
+gdervwxsb
+dmwtzvser
+vxeodrsw
+
+vrogjlicfawzsp
+cizjgsvpowfr
+pcnjszwgfvior
+fipzcswgrumvoj
+rgzivfsjcpow
+
+ivczsybaumfw
+ycubmfsaknivz
+fiuorsjaxbedmqvzpc
+
+bhrtmsjvycugo
+qtcmuzvijgwo
+imjcvugot
+ktcfjvumangdqo
+
+j
+j
+j
+j
+
+za
+pz
+z
+bsfz
+dz
+
+hmwonxvap
+hblkxipg
+
+akxnubovgqrmethsljfyzp
+bujrpkaqxlvchnseyogz
+
+qlczeuwabjhvrio
+xpequraivwlybo
+
+pxwikfabnchuetglysjzdoq
+lvhfqyetwcsjkxbonzirdgpau
+
+e
+e
+e
+
+klrbyvuftpcz
+cuyrkahfwzp
+pmuycksizhfr
+
+kwlvo
+wepmktxisjy
+
+k
+k
+k
+k
+k
+
+dhgnwrvpek
+ajwtz
+
+yacvhuemrtfsxlq
+lfthcxqevusmrya
+ruelsatcymxqhfv
+
+th
+th
+th
+th
+
+yqjr
+vryjq
+jqyr
+jyrq
+jrqy
+
+tahgsc
+gzmk
+
+zpvcrxbsmih
+rhizxpcvsm
+ixmtcvoprzh
+pzivhxrcm
+
+rbqduhsvnfzk
+rxlbkygnafv
+funwbhqvpkmrs
+
+sjadyxvrqhobnpc
+kdmnulszox
+mogwxsdn
+tunesidoxw
+
+ahvsedrqbknimuopyxgtzjlfwc
+dwfbjaycghexmvruzqospntilk
+kogcduhfjqytpzxmnrabwviles
+
+bsyfzeqhtj
+wisxmcuvfedrhqpogk
+fhqbnsae
+
+hdvbnclafkeomi
+ivodaekhfbln
+flknidhavoeb
+
+xcmwfapzdbykel
+pymawczdxbfkel
+dxleyzkbawcmfp
+
+fkurqjcy
+jefpyqncus
+iqfuyejc
+
+obtxlcksuwpga
+riyemjnqvhb
+
+zqwjpkuhb
+pwkbhuqz
+bkzhquwp
+hwezktbuqpd
+
+id
+ifd
+
+dscfkeqygmwbjh
+jbchemdywgszkq
+qobtdmgkysecnjhw
+esnbwdjgcrqmtkzhy
+
+q
+m
+j
+j
+f
+
+njrpisbwzadqmxoehtufv
+hdguestbnmcoywvjriqzkalpf
+
+lrsonbymx
+lyrnobfs
+bkrslnyo
+
+vgcodqenikzuxaw
+qvdiofcg
+viqolcdg
+igcoqvd
+
+fjbiwxasygutmpekhzo
+ospmijwbheyxfzatkuq
+cxbofehvjtpkduiarnmwzys
+owihxpbufjzealgktmsy
+
+tj
+thj
+tjd
+jt
+
+qtdujcnxvwzb
+vtujndzxbqc
+
+msg
+sqmg
+gms
+
+webhxajqyodtkrfi
+hqyoferxiskdjt
+rdeuxzkqcgoyjfhti
+
+lchkxdoaistu
+icgurhxadjtlw
+lpbvxhudiaoftmc
+tibdlxacuh
+
+dk
+qdk
+dk
+
+cirlxzasbewtqhu
+uwhbtrlisezxqac
+btxuahselcrqizw
+lestuhzqixwbacr
+
+vuagosxhlwknqf
+faxqjohiskg
+ifoxakgqjhs
+kjaohgsxfq
+
+uzqweghvcyaxdjr
+vuxcezfhakwrnjd
+
+jmvkqrpwncthyedzf
+prjctvmdhnzwyeqb
+diwqtyarjvcphomez
+
+zvjdrt
+jerd
+gudrnjyi
+jrupdy
+nxdrj
+
+rfqchv
+qvrbcw
+
+yavdkqfgblmnrjzt
+mzkrbldqfanvxygtj
+qftbkalnjgzrvdym
+
+vjcymkrxfoze
+jqaryxft
+xfwjsary
+jtxyrngawlf
+
+isxcbhg
+ghisxbc
+beihvxcgs
+hcixsbg
+
+redhcn
+erchmd
+crndhe
+
+d
+l
+d
+
+rywl
+x
+x
+xb
+
+psamodnt
+
+chlouyspebfgqwtrzx
+bepoqlszhyctgwfxru
+oxbhqpcsuyfwtgrlez
+uzycspwhqxrefltbago
+
+plh
+plhy
+phl
+hprl
+hpl
+
+expoilumtaqswbvfr
+ogtqpvfixejukrm
+
+ta
+tawz
+cazjtu
+tan
+hoxtvdla
+
+pvnzmau
+qapbztn
+
+ujtlbmiyfzndcar
+dzmynrltbfjiauhc
+drmfzubayljitnc
+bzymcanlirftujd
+
+jrxnuhiowaqpte
+xroapikqhwuetnyj
+ajwxtuirphqeon
+hqspnwutojeraxi
+juaetrqihwnpox
+
+yiefhrjqzvdmtxsc
+xevqhfwnidcrztsj
+
+onix
+qxoni
+nixo
+noix
+
+ognwrdsblz
+szndwrogbl
+ornsldbwzg
+orzgdlsbwn
+bsrwglzdno
+
+wofyhk
+udplqarzvctji
+
+rqxozpsaibntmej
+ojrbqtdycapex
+
+fvxkbh
+ypvukbjtxolds
+kvemnbx
+vnaxbk
+vbmkxh
+
+varjgoetfybz
+bkzawthr
+btznraxd
+
+l
+l
+
+mjcgqfxwb
+bksjgf
+peuvglyfbt
+jfgrib
+
+xfz
+fsxozi
+uxsfz
+ftkxzdl
+azexbcvf
+
+dhxajrmfnbswpzogevkqt
+celtbzqdwshfoarkpgmxjnvi
+zedsbhjptfrwovnkqxagm
+
+mxspckqzbnljdg
+temluosvpzrqajwyihfb
+
+bpxyihds
+sbvydxl
+xysdb
+bxyds
+
+eads
+fbo
+eti
+kq
+vkea
+
+djmtozaelq
+fajweltko
+aojlted
+hlparcjtevon
+
+rbyq
+zb
+b
+
+qxtvmfg
+gfnmov
+
+xspvygam
+axmegpvfjs
+xglawvus
+vxrdsibztaqnohg
+gavkysx
+
+x
+x
+vx
+
+xhb
+oazjhgti
+
+ldneqv
+dqenv
+nqved
+
+gupdfahosmeqwvnxcyjktzri
+hmxuazkrwogtnvfedisqjyp
+kixtsgbfdryhnowazquemvpj
+
+zuikhyslpf
+abpyshfizj
+
+dqtwlxhcyoarfksgiz
+pirkqdlzhwtxgsc
+uzgrkqlechtxdnswvi
+
+kizowal
+owikal
+oixkla
+oiaklw
+qtsiguhcopbralfk
+
+luzhpkn
+kluzpnh
+pulhnzk
+znphluk
+
+bdnxlirpvf
+jirxzdlpnfb
+kniydgxpzfblr
+mprdelfixnb
+uirbfndxoqpcyl
+
+frsu
+rusf
+rusfzv
+srfu
+
+pyzsgecva
+ykpwvczgsae
+gfjdsloeaycpvzbu
+yczgavespnq
+
+ktlpuiwrnx
+ripwulnkxb
+rkulinpwx
+iuxlrjkngpw
+neuipklwxr
+
+sradxf
+adxrs
+sxard
+
+bjnohgcvr
+zfpkhbvcg
+psgdcrtvhb
+eabyiqvughx
+
+kxhwus
+wivusgfxlkhp
+hsakzuxw
+khswxu
+
+f
+f
+fs
+f
+
+padbnywfuscoqjztxveh
+acxiwvhnsztpdoebqjrufk
+
+wupafhjl
+hjuapiwlf
+ujlhfapw
+lfjnwuehopa
+pwhualjf
+
+zgrqmnldp
+auxc
+kfiejas
+vyj
+ioxf
+
+v
+z
+z
+z
+
+s
+ob
+r
+p
+p
+
+luenpwhqmixfdycbjzo
+nhqpcjkfdlibewzoyxum
+ypcowmbjxehdquklzfin
+ibhocfeulzkdjpwnmqxy
+bglmdjynwoiuqxtapzchrvfe
+
+p
+p
+
+w
+w
+w
+
+xfziauswmvlcyphejbr
+waikrhpxyelfbuzjgcs
+izlpysmfcvhxbjewua
+kechslajfnpdzuiwmyxb
+citspjxauolqwyehfzb
+
+wfheyikgasxdrtbuv
+moadrubycxlkqgnf
+
+k
+k
+k
+k
+
+cxefwranqjugbdvhmztolk
+wloerzghqubjtkvmcf
+zuwtbjerghlfmvockq
+lwqoktrvuecmhzfbjg
+gkcwovqfelzutribmhj
+
+veqilrtfyougsh
+ftgeryquhlos
+vrthgulyesfqpo
+fgyqcesrotdhlu
+
+lcg
+g
+g
+g
+
+dwisnxaofuhptm
+wtfmxhiodasnpu
+txipsonhmdfwau
+xuhrqtfiaswnodpm
+
+pcjarklxt
+taclwxjdyq
+nmslcjtavz
+
+qmxck
+mxkc
+xmtck
+kcmx
+xijfrwcomnvbk
+
+nkldcwg
+wkdulnxjgv
+dngwkc
+gwdonpqkbm
+
+pwshd
+pirbsjx
+lwmynstfp
+
+kczlxgrejo
+gzcklromxje
+vzojblxkegicr
+
+bnomczytil
+lcnyotmzib
+wcyzbnmotli
+
+ylufxhtgoes
+cjxkvb
+
+lqemdrysaivht
+zqtvhedriymsxla
+stdlhgrevyimaq
+vaqthedrlsiym
+dyvstihqlajrem
+
+myfpnvcadqkbxiotzlrsgu
+bcldgstvqnzxfkiouyrmp
+gpxmincbluqdvrtzoyfskj
+qnyrszmkbdfcvptxoguli
+rgiupovtbcsykdlnzxfqm
+
+ldmk
+dmlk
+ldkm
+dkml
+mkld
+
+ej
+je
+ej
+je
+ej
+
+qkxgnbc
+kpaxn
+sxnyfk
+xnfak
+
+tyndxmviuse
+kqcyublzjg
+lojbhcuy
+
+neblxiuvkfzhqato
+nhxetzifvuaklqbo
+kqonilteuxvbzfha
+quixlofzehnbvtdka
+
+fzcihlrpsdjnw
+hfsjmvzcrlntpud
+enshlxkrzdjcfp
+
+jugohqf
+jguqhof
+
+wjcmkpvarxbgeu
+rwcbkvmxpgeja
+votgrwcxbhmjekza
+kjnmgsewacbvrx
+
+jdrwzfkoylhcpi
+twyjfplhrkduizo
+hznyfioapldtwjrk
+drjkwoazhfnielyp
+
+lhspwojdmg
+pldwgosht
+howgzsldp
+
+cpwdrhijgvslafzbxonu
+fponlcwbsvg
+cogbpnvlfswe
+
+euyd
+eyud
+tdxvyehkuimboawj
+
+ryapequ
+ceypdrqwbu
+
+hwljoxctrvqmbe
+jwxevkbthqclg
+blafpsvdtxhecu
+
+mqilcgjhxfoeywpb
+itelobympfqxjg
+oyexftibpjmglq
+
+xdwmaqpiksb
+onijacqwb
+lzeqfhrtv
+
+wuoy
+owy
+owy
+oyw
+wyo
+
+haroqjtfwklcpv
+ynwiramueojpfc
+
+v
+v
+
+xtpqcbsjineougwrf
+xjkbyrzscfguhtqn
+bugjrtdhanmfqxscl
+
+migthyklesbxofcn
+ahgujbtknprewmczifl
+
+sivaghdjkozrltucfneqxbmywp
+xtenwkripmygzsbuhvdofclj
+
+ivchktemys
+itehvpymws
+tnrvesymdix
+
+pglbhwceodjquafiksn
+qhdlgpoacwknufbjes
+
+bxtzeoikah
+lduqfcz
+pzcudmwyv
+szd
+
+awmjrsxk
+ajwxrmks
+whrqkamjs
+
+zkmvthagdb
+fapxlozdi
+caroenzduxsyq
+
+so
+p
+no
+n
+abrf
+
+wf
+wk
+akw
+
+nirkchlegpjdwufzaqy
+rgjukynqcipaezlhwd
+yuqwdernaljkpizchg
+
+jtvq
+qm
+q
+q
+
+ovarqt
+anx
+
+lxzeuicjbmvaq
+vixcmagqbjzuel
+xlrzuatecivjbmq
+qjxvblzemicua
+xejizagcqbumvl
+
+fxtnyehakqv
+yiugswbovjdrpm
+
+po
+p
+gdp
+
+vboc
+bacg
+bcvol
+xbecp
+bcv
+
+kblpg
+bklgp
+bpmglk
+
+jqlgxofivabcue
+uiagobjlfexq
+geulaibojqfx
+iquogfabxlje
+ouafxljhqtibge
+
+jrupzdlhixcbnkte
+inchptudjzxelrk
+dhiegazkptvqxmrucnj
diff --git a/day6/main.py b/day6/main.py
new file mode 100644
index 0000000..7bad5d2
--- /dev/null
+++ b/day6/main.py
@@ -0,0 +1,24 @@
+"""Day 6."""
+from collections import Counter
+
+
+def score_part1(group):
+ """Determine score for group in part 1."""
+ return len(set(group.replace("\n", "")))
+
+
+def score_part2(group):
+ """Determine score for group in part 2."""
+ group_size = group.count("\n") + 1
+ counter = Counter(group.replace("\n", ""))
+ return sum(1 for _, occurences in counter.items() if occurences == group_size)
+
+
+with open("input") as f:
+ groups = f.read().rstrip().split("\n\n")
+
+# Part 1
+print(sum(map(score_part1, groups)))
+
+# Part 2
+print(sum(map(score_part2, groups)))