aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2022/02/input2500
-rw-r--r--2022/02/solve.py40
2 files changed, 2540 insertions, 0 deletions
diff --git a/2022/02/input b/2022/02/input
new file mode 100644
index 0000000..9d27e74
--- /dev/null
+++ b/2022/02/input
@@ -0,0 +1,2500 @@
+B Y
+A X
+C Z
+A Z
+B Y
+B Y
+A X
+C Z
+B Y
+B Y
+C Z
+C X
+B Y
+C Z
+B Y
+C Z
+A Z
+A Z
+A X
+B Y
+A X
+C Z
+C Y
+C Z
+C Z
+C Z
+A X
+A X
+B Y
+A Z
+B Z
+B Y
+A X
+A X
+C Z
+B Y
+B Y
+B Z
+A Z
+A X
+C Z
+B Z
+A Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B X
+A Z
+A Z
+C Z
+C Z
+C Z
+A Y
+C Z
+B Y
+C Z
+C Z
+C Z
+B Y
+B Z
+A X
+A X
+C Z
+B Y
+B Y
+B Z
+A X
+A X
+C Z
+B Y
+C Z
+A X
+C Z
+A X
+C X
+A Y
+A Y
+B Y
+A Y
+C Z
+B Y
+C Z
+C Z
+A X
+C Z
+A Z
+C Z
+A X
+C Z
+B Y
+B Y
+C Z
+B Z
+C Y
+C Z
+B Y
+C Z
+C Z
+B X
+A X
+C Z
+C Z
+B Y
+C Z
+B Y
+A Z
+B Y
+B Z
+A Z
+C Z
+C Z
+C Z
+A Z
+C Z
+A X
+A X
+A Z
+C Z
+A X
+A Z
+C Z
+A Z
+A Y
+B Y
+A Z
+B X
+A X
+C Z
+C Z
+B Y
+C Y
+B Y
+B Z
+B Y
+B Y
+C Z
+C Z
+C Z
+C Z
+A Y
+C Z
+B Z
+A X
+B Y
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+C Z
+B Y
+C Z
+B Y
+C Z
+C X
+A Y
+A X
+C Y
+B Y
+A Z
+C Z
+C Z
+B Y
+B Y
+A X
+B Y
+A Y
+A X
+A X
+B Y
+A X
+A X
+B Y
+C Z
+C Z
+B Y
+C Z
+A Z
+C Z
+B Z
+C Z
+A Y
+C Z
+B Z
+C Z
+A Y
+A Y
+C Z
+A X
+B Y
+C Z
+A X
+B Y
+B Y
+A X
+A X
+C Z
+B Y
+C Z
+B Z
+C Z
+A X
+C Z
+B Y
+B Y
+A X
+B Z
+C Z
+B Z
+B Y
+B Y
+A Y
+B Z
+A Z
+C Z
+C Z
+A X
+A X
+A X
+C Z
+B Y
+A X
+A Y
+C Z
+A X
+B Y
+A Y
+A Y
+C Z
+C Z
+C Z
+A Z
+B Z
+C Z
+B Y
+C Z
+C Z
+A Y
+A X
+C Z
+B Y
+C Z
+C Z
+B Y
+B Y
+A Y
+C Z
+B Y
+B Y
+A Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Y
+A X
+C Z
+B Z
+A Z
+A X
+C Z
+A X
+A X
+B Y
+C Z
+C Z
+A X
+C Z
+A Y
+C Z
+C Z
+A X
+B Y
+C Z
+B Z
+B Y
+C Z
+A Z
+C Z
+C Z
+A Y
+A Z
+C Z
+C Z
+B Z
+C Z
+B Y
+C Z
+C Z
+A X
+C Z
+C Z
+B Z
+C Z
+B Z
+A X
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+A Z
+A Y
+A X
+A X
+C Z
+B X
+A Z
+A X
+C Z
+B Z
+C Z
+B Y
+A Z
+C Z
+B Y
+C Z
+C Y
+A Y
+C Z
+B Y
+B Y
+C Z
+A X
+C Z
+A X
+C X
+A X
+B X
+A X
+C Z
+C Z
+C Z
+B Y
+B Y
+C Z
+B Z
+C Z
+B Y
+A X
+C X
+C Z
+B Y
+A Z
+A X
+B Y
+B Y
+C Z
+C Z
+C Z
+B Y
+A X
+A X
+B Y
+A X
+A Y
+C Z
+B Y
+A X
+A Y
+B Y
+A X
+A X
+C Z
+C Z
+C Z
+C Z
+C Z
+A X
+A X
+B Z
+A Y
+C Z
+A X
+C Z
+B Y
+C Z
+A Z
+C Z
+C Z
+A Y
+B Z
+C Z
+A X
+B Y
+B Y
+C Z
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+A X
+A X
+B Y
+C Z
+C Z
+A Z
+C Z
+C Z
+C Z
+A Y
+B Z
+B Y
+B Y
+C Z
+A X
+A Y
+C Z
+A X
+A Y
+A X
+C Z
+A Y
+B Z
+B Y
+B Z
+C Z
+C Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+B Y
+B Z
+A Y
+A Y
+B Z
+B X
+A Z
+A X
+C Z
+A X
+A Y
+A X
+A X
+A X
+C Z
+C Z
+C Z
+A X
+C Z
+C Z
+B Y
+A X
+C Z
+A X
+A Y
+A X
+C Z
+A Y
+C Z
+B Y
+A X
+A Y
+A Z
+C Z
+B Y
+B Y
+B Z
+A X
+A X
+B Y
+C Z
+A X
+B Y
+C Z
+C Z
+C Z
+A X
+A Y
+A Z
+C Z
+B Y
+C Z
+A X
+A Z
+A Z
+B Y
+B Y
+A X
+B Y
+C Z
+B Z
+C Z
+B Y
+A Z
+C Z
+A Y
+A X
+A Z
+B Y
+A X
+A Z
+C Z
+A Z
+C Z
+C Z
+A X
+C Z
+A X
+C Z
+A X
+C Z
+B Y
+C Z
+A X
+B Y
+A Y
+C X
+A Y
+A Z
+A X
+A Z
+B Y
+A X
+C Z
+A Y
+B Y
+B Y
+C Z
+B Y
+C Z
+B Y
+B Z
+C Z
+C Z
+B Y
+A X
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+A X
+A X
+A Z
+A Z
+C Z
+A Y
+B Y
+A Y
+A Y
+B Y
+C X
+A Y
+C Z
+C Z
+C Z
+A Y
+A Y
+A Y
+C Z
+A X
+B Y
+A X
+B X
+A Y
+A Y
+A X
+B Z
+B Y
+C Z
+B Y
+C Z
+B Y
+C Z
+A Z
+C Z
+A X
+B Y
+A X
+C Z
+B Z
+C Z
+B Y
+C Z
+C Z
+C Z
+A X
+A X
+B Y
+B Z
+A Z
+A X
+A X
+C Z
+A X
+A X
+C X
+C X
+C Z
+B Y
+B Z
+C Z
+A X
+B Y
+B Y
+A Z
+C Z
+C Y
+A X
+B Y
+B Y
+C Y
+A X
+A X
+A X
+A X
+A Z
+B Y
+A Z
+C Z
+C Z
+B Y
+B Z
+B Y
+A Y
+C Z
+C Z
+B Y
+A Y
+C Z
+A X
+C Z
+C Z
+A X
+B Y
+C Z
+C Z
+A X
+A Z
+C Z
+A Z
+C Z
+B Z
+A X
+A Y
+B Y
+A X
+A Y
+A Z
+A Y
+A X
+A Y
+C Z
+A X
+C Z
+C Z
+A X
+A Y
+A X
+C Z
+A Z
+C Z
+C Z
+C Z
+A X
+B Y
+A X
+C Z
+C Z
+C Z
+C Z
+A X
+C Z
+C Z
+B Y
+A Y
+A X
+A X
+C Z
+C Z
+A X
+C Z
+C Z
+B Y
+C Z
+A X
+C Z
+C Z
+A Y
+A X
+C Z
+A Y
+C Z
+A X
+B Z
+B Y
+A X
+B Y
+C Z
+A X
+C Z
+C Z
+A X
+C Z
+B X
+C Z
+C Z
+A Y
+C Z
+A Y
+B X
+C Z
+B Y
+C Z
+A Z
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+A X
+B X
+C Z
+C Z
+B Y
+A Z
+A Y
+C Z
+A X
+A Z
+A X
+A X
+B Y
+A X
+C Z
+A X
+A X
+B Y
+A X
+B Z
+C Z
+A Z
+A Y
+A X
+B Y
+A X
+A Z
+A X
+B Y
+B Z
+B Y
+C Z
+B Y
+A X
+A Y
+C Z
+A X
+B Z
+C Z
+C Z
+A X
+A X
+A Y
+C Z
+C Z
+C Z
+A Y
+B Y
+A X
+C Z
+B Y
+B Y
+A X
+A X
+B Y
+C Z
+B Y
+A X
+A Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+A Z
+C Z
+A Y
+B Y
+A Y
+C X
+C Z
+C Z
+A Y
+A X
+B Y
+C Z
+A X
+C Z
+A X
+A Y
+A Y
+B Z
+C Y
+B Y
+C Z
+B Y
+A X
+C Z
+C Z
+C Z
+C Z
+B Y
+A X
+B Y
+A Y
+C Z
+B Y
+A Z
+B Z
+C Z
+C Z
+C Z
+C Z
+A Y
+A X
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+C Z
+B X
+C Z
+B Z
+A X
+A X
+A Y
+A X
+A Z
+B Y
+A Y
+C Z
+C Z
+C Z
+C Z
+C X
+A Y
+C Z
+C Z
+B Y
+A X
+C Y
+B Y
+C Z
+C Z
+C Z
+B X
+A X
+C Z
+A X
+C Z
+C Z
+C Z
+C Y
+A X
+C Z
+A Z
+C Z
+C Z
+B Y
+A X
+A X
+A Z
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+A Y
+A X
+C Z
+C Z
+A X
+A X
+C Z
+C Z
+B Y
+A X
+A X
+C Z
+C Z
+C Z
+B Y
+A Y
+B Z
+A Y
+C Z
+A X
+C Z
+C Z
+B Y
+A Y
+A X
+B Z
+A X
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Y
+C Z
+C Z
+C Z
+B Y
+C Z
+C Y
+B Z
+B Z
+A Y
+C Z
+C Z
+B Z
+B Y
+C Z
+B Y
+C Z
+C Z
+B Y
+C Z
+C Z
+C Z
+A Y
+A X
+B Y
+C Z
+C Z
+C Z
+B Y
+C Z
+A Y
+A X
+A Z
+A Y
+C Z
+C Z
+C Z
+B Z
+C Z
+B Y
+C Z
+B Y
+A Y
+C Z
+C Z
+A Z
+B Y
+A X
+A X
+B Z
+A X
+C Z
+C Z
+C Z
+A X
+B Z
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A Y
+C Z
+A Z
+A X
+B Y
+C Z
+C Z
+A X
+A Y
+C Z
+B Y
+A X
+C Z
+C Z
+A X
+A Y
+A X
+B Z
+C Z
+A X
+C Z
+A X
+A Z
+B Y
+C Z
+C Z
+C X
+B Z
+B X
+B Y
+A Z
+C Z
+A X
+B Z
+A X
+B Y
+C Z
+B Z
+A Z
+A Z
+C Z
+C Z
+C Z
+C Z
+B Y
+B Y
+A Y
+A X
+A X
+B Y
+A Z
+A X
+C Z
+B Z
+A X
+A X
+B Y
+A X
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+A X
+A X
+A Z
+C Z
+A X
+B Z
+C Z
+B Y
+C Z
+C Z
+A Y
+C Z
+B Z
+C Z
+C Z
+B Y
+C Z
+C Z
+B Y
+A X
+A X
+C Z
+C Z
+C Z
+A X
+C Z
+C Z
+B Y
+C Z
+B Z
+C Z
+A X
+C Z
+A X
+C Z
+A Y
+C Z
+C Z
+A X
+B Y
+C Z
+C Z
+C Z
+A X
+B Y
+C Z
+A X
+B Z
+A X
+B Z
+C Z
+A X
+C Z
+B Y
+A Z
+B X
+A Y
+C Z
+C Z
+B X
+A Y
+A X
+C Z
+A X
+C Z
+B X
+A X
+B Y
+A Z
+A X
+C Z
+A Y
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+A Z
+C Z
+C Z
+B Y
+A X
+B Y
+C Z
+B Y
+A X
+C Z
+C Z
+A X
+A X
+B Y
+C Z
+B Y
+C Z
+C Z
+A Z
+C Z
+C Z
+C Z
+A Y
+A Z
+C Z
+C Z
+C Z
+C Z
+A X
+C Z
+A X
+A X
+B Z
+C Z
+C Z
+C Z
+B Z
+A X
+C Z
+A Y
+B Y
+C Z
+A Y
+C Z
+C Z
+A X
+A X
+B Y
+A Z
+A Y
+A X
+B X
+B Y
+B Z
+B Y
+A X
+C Z
+C Z
+B Z
+B Z
+B Z
+C Z
+C Z
+B Y
+B Y
+B Y
+C Z
+B Y
+A X
+A Z
+B Z
+A X
+B Z
+A X
+C Z
+B Y
+B X
+A X
+C Z
+A X
+C Z
+C Z
+C Z
+B X
+B Y
+A Y
+A X
+A X
+A Y
+C Z
+C Z
+B Y
+C Z
+B Z
+A X
+C Z
+C Z
+C Z
+A X
+A Y
+C Z
+B Z
+A X
+A Y
+A Z
+C Z
+B Y
+B Z
+A X
+C Z
+A X
+A X
+A Z
+C Z
+C Z
+B Y
+A X
+C Z
+A Y
+A Z
+A X
+A X
+C Z
+A Y
+B Y
+C Z
+A Z
+C Z
+B Y
+A X
+A X
+A X
+C Y
+C Z
+A Y
+B Z
+C X
+A X
+A X
+A X
+A X
+B Z
+B Y
+C Z
+B Y
+A X
+B Y
+C Z
+B Y
+C Z
+C Z
+A X
+B Y
+A Y
+B X
+A X
+B X
+C Z
+A Z
+A X
+B Y
+B Y
+C Z
+A X
+A X
+B Y
+C Z
+A X
+C Z
+A X
+A Z
+A Z
+C Z
+A Z
+C Z
+C Z
+C Z
+C Z
+A Z
+C Y
+C Z
+C Z
+A Z
+A Y
+A X
+B Z
+C Z
+C Z
+C Z
+A Y
+C Z
+C Z
+C Z
+C Z
+A Z
+B Z
+A X
+C Z
+C Z
+A Y
+B Y
+A X
+C Z
+A X
+B Y
+A X
+A X
+A Z
+B Y
+C Z
+B X
+C X
+A X
+A X
+A X
+C Z
+C Z
+A X
+B Y
+A Z
+B Y
+A X
+A Y
+C Z
+B Y
+C Z
+B Y
+A Y
+B Y
+A Y
+A X
+C Z
+C Z
+A X
+B Y
+A X
+C Z
+C Z
+A Y
+B Y
+B Y
+A Z
+B Y
+C Z
+C Z
+C Z
+B Y
+A X
+B Y
+A X
+C Z
+C Z
+C Z
+A X
+C Z
+C Z
+B Y
+C Z
+B Z
+B Y
+A X
+B Y
+A Z
+B Y
+A X
+B X
+C Z
+A Z
+B Y
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+B X
+A X
+B Y
+B Y
+A X
+C Z
+A X
+B Z
+B Z
+B Z
+A X
+C X
+A X
+A X
+A X
+B Y
+B Y
+C Z
+C Z
+A X
+C Z
+B Y
+A X
+C Z
+A X
+C Z
+A X
+B Y
+C Z
+C Z
+A Y
+B Y
+C Z
+A Z
+C Z
+A X
+C Z
+C Z
+A Z
+A Y
+C Z
+A X
+B Y
+B Z
+C Z
+A Y
+A Y
+C Z
+C Z
+B Z
+A Z
+C Z
+A X
+C Z
+A X
+C Z
+C Z
+C Z
+B Y
+C Y
+B Y
+A Y
+A X
+C Z
+B Y
+C Z
+C Z
+C Z
+A Z
+C X
+A Y
+C Z
+A Y
+A Y
+C Z
+A Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+A Y
+B Y
+A Z
+B Y
+A X
+A X
+B Y
+A Z
+B Y
+C Z
+B Z
+A X
+C Z
+A Y
+A Y
+C Z
+A X
+A X
+C Z
+C Z
+C Z
+B Y
+A X
+C Z
+B Y
+C Z
+B X
+C Z
+A Y
+C Z
+A X
+C Z
+A X
+C Z
+C Z
+B Y
+C Z
+B Z
+C Z
+A Y
+A X
+A Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A Z
+B Y
+B Y
+B Y
+C Z
+C Z
+C X
+C Z
+A X
+B Y
+C Z
+C Z
+A X
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A X
+B Z
+C Z
+C Z
+C Z
+A X
+B Z
+C Z
+A X
+C Z
+A Y
+B Y
+C Z
+B Z
+B Y
+C Z
+B X
+C Z
+B Y
+B Y
+B Y
+A X
+A X
+C Z
+A Z
+C Z
+B Y
+B Z
+C Z
+C Z
+B Z
+B Y
+A Z
+B Y
+A X
+A X
+C Z
+C Z
+C Z
+B Y
+A X
+C Z
+C Z
+A Y
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+B Y
+C Z
+A Z
+A X
+B Y
+C Z
+B Y
+A X
+A Z
+C Z
+B Y
+A Z
+C Z
+B Y
+A Z
+A X
+B Z
+A X
+C Z
+B Y
+C Z
+A Y
+C Y
+A X
+A Y
+C Z
+C Z
+B Y
+C Z
+B Y
+A Z
+C Z
+C Z
+A X
+C Z
+B Z
+A Y
+B Z
+A Z
+A X
+B Y
+A Z
+A Y
+C Z
+C Z
+B Y
+A X
+B Y
+C Z
+A X
+B Y
+B Y
+C Z
+A Z
+A X
+C Z
+B X
+C Z
+C Z
+C Z
+C Y
+A Z
+A X
+C Z
+C Z
+A X
+B Y
+C Z
+B Y
+C Z
+B Z
+A Z
+C Z
+B Y
+A X
+C Z
+C Z
+B Z
+C Z
+A Z
+B Y
+B Z
+C Z
+C Z
+A X
+C Y
+B Y
+C Z
+A X
+C Z
+C Z
+B Y
+B Z
+C Z
+C Z
+A Y
+A X
+C Z
+A X
+B Z
+B Y
+A Z
+B Z
+C X
+A X
+C Z
+C Z
+C Z
+A X
+B Z
+C Z
+C Z
+C Z
+B Y
+C Z
+A X
+C Z
+C Z
+B Y
+C Z
+A X
+C Z
+C Z
+C Z
+A X
+A X
+B Y
+C Z
+C Z
+B Y
+B Z
+B Y
+C Z
+A X
+A X
+B Y
+A X
+B Y
+C Z
+A X
+C Z
+C Z
+B Z
+A X
+B Y
+C Z
+C Z
+C Z
+C Z
+A Z
+C Z
+A X
+B Y
+A Y
+A Y
+C Z
+C Z
+C Z
+B Y
+A Z
+A X
+B Y
+C Z
+A X
+C Z
+A X
+C Z
+A X
+C Z
+C Z
+B Y
+A Y
+C Z
+B Y
+B Y
+A X
+C Z
+A Y
+A Z
+C Z
+C Z
+C Z
+A Y
+B Y
+C Z
+C Z
+B Z
+C Z
+B Z
+B Y
+A X
+A X
+C Z
+B Z
+C Z
+C Z
+A X
+A X
+B Z
+A X
+C Z
+C Z
+B Y
+A X
+C Z
+A X
+B Y
+C X
+A Z
+B Y
+C Z
+A X
+B Y
+C Z
+A X
+B Y
+C Z
+B X
+C Z
+A Y
+C Z
+A X
+C X
+B Z
+C Z
+B Y
+B Y
+B Y
+A Y
+A X
+C Z
+C Z
+A Y
+B Y
+A X
+C Z
+A X
+C Z
+C Z
+A X
+C Z
+A X
+C Z
+B Y
+C Z
+A X
+A Z
+C X
+B Y
+C Z
+C Z
+B Z
+A X
+A X
+B Y
+C Z
+A Y
+B Y
+C Z
+A X
+A Z
+A X
+B Y
+A X
+B Y
+C Z
+C Z
+B Y
+A X
+B Y
+B Z
+C Z
+B Z
+A X
+C Z
+C Z
+A Y
+C Z
+A X
+C Z
+B Y
+C Z
+C Z
+C Y
+C Z
+C Z
+A Y
+C Z
+C Z
+A Z
+A X
+B Z
+C Z
+A Y
+A X
+B Z
+C Z
+C Z
+B Y
+B Z
+A X
+A X
+C Z
+B Y
+A Y
+C Z
+A Z
+A X
+C Z
+A X
+C Z
+C Z
+A Z
+C Z
+C Z
+C Z
+A Y
+B Y
+A X
+B Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A Z
+B Z
+B X
+A X
+A Z
+A X
+A X
+B Y
+C Z
+C Z
+A X
+B Y
+A Y
+C Z
+B Z
+C Z
+A X
+B Y
+C Z
+B Y
+A Z
+C Z
+A Y
+C Z
+A X
+C Z
+A Z
+B Y
+A Y
+A X
+A X
+A Z
+C Z
+C Z
+C Y
+C Z
+A Y
+A X
+B Y
+A Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+A X
+A Y
+B Y
+C Z
+B Y
+C Z
+A X
+B Y
+C Z
+C Z
+A Z
+A X
+B Y
+C Z
+A Y
+C Z
+C Z
+C Z
+A X
+B Y
+A X
+B Y
+C Z
+C Z
+B Y
+C Z
+A X
+A X
+C Z
+B Y
+B Z
+A X
+A X
+A X
+C Z
+C Z
+B Y
+A X
+C Z
+A X
+A Z
+C Z
+C Z
+C Z
+C Z
+A Z
+A X
+B X
+B Z
+A Y
+C Z
+C Y
+B Y
+C Z
+A Y
+A X
+B Z
+B Y
+C Z
+B Y
+C Z
+A X
+A Z
+A X
+C Z
+B Y
+B Y
+B Y
+A Z
+C Z
+C Z
+B Y
+C Z
+B Y
+A X
+B Y
+A X
+B Y
+C Z
+C Z
+B Y
+A X
+A Y
+B Z
+C Z
+C Z
+A X
+B Y
+A X
+A X
+A Y
+B X
+A X
+A X
+C Z
+B Z
+A X
+C Z
+A Y
+A Z
+C Z
+A Z
+A X
+B Y
+A X
+C X
+C Z
+B Y
+C Z
+A X
+A X
+C Z
+A X
+B Y
+A X
+C Z
+B Z
+C Z
+A X
+C X
+C Z
+C Z
+A X
+C Z
+A Y
+C Z
+A X
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+B Y
+A Y
+A Z
+B Y
+C Z
+C Z
+B Y
+A Z
+A X
+A Y
+A X
+C Z
+A Y
+A Z
+A Y
+B Y
+C Z
+C Z
+A Y
+C Z
+A X
+B Y
+C Z
+A X
+C Z
+A X
+B Y
+C Z
+C Z
+A Z
+A X
+C Z
+B Y
+A Z
+C Z
+A X
+C Z
+B Y
+B Y
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+B Y
+A X
+C Z
+C Z
+A Z
+C Z
+A X
+C Z
+C Z
+A X
+B Y
+A X
+C Z
+B Y
+B Y
+A Y
+A Y
+A X
+A Y
+A Y
+C Z
+C Z
+A Y
+C Z
+A Y
+B Y
+C Z
+C Z
+C Z
+B Y
+B Y
+B Y
+A X
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+A X
+B Y
+A X
+C Z
+A X
+C Y
+A Y
+B Y
+C Z
+C Z
+C Z
+C Z
+B Y
+C Z
+C Z
+B Y
+C Z
+A X
+A X
+B Y
+B X
+C Z
+B Y
+A X
+B Z
+A Z
+C Z
+C Z
+C Z
+C Z
+B Y
+A Z
+C Z
+C Z
+C Z
+C Z
+A X
+A X
+B Y
+A Z
+C Z
+C Z
+C Z
+C Z
+A Z
+B Y
+A X
+B Y
+C Z
+C Z
+B Z
+C Z
+A Y
+C Z
+A Y
+B Y
+C Z
+A X
+C Z
+A X
+B Z
+B Y
+B Y
+A X
+B X
+A X
+C Z
+B Y
+A X
+A Z
+C Z
+C Z
+A Z
+C Z
+C Z
+B Y
+C Y
+C Z
+A Z
+A Z
+C Z
+B X
+C Z
+C Z
+B Y
+C Z
+B Y
+B Y
+A X
+A Y
+B Y
+A X
+B Z
+C Z
+A Z
+A X
+A X
+A Z
+A Z
+B Z
+A X
+B Y
+C Z
+B Y
+A X
+C Z
+B Z
+A Y
+B Z
+C Z
+A X
+B Z
+A X
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+A Y
+A Y
+A X
+B Y
+C Z
+A X
+B Y
+A X
+B Y
+C Z
+A Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+B Z
+C Z
+A X
+A Z
+A X
+A X
+C Z
+C Z
+C Z
+C Z
+B Y
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+A Z
+A X
+A Z
+C Z
+C Z
+C Z
+C Z
+B X
+C Z
+C Z
+A X
+C Z
+A Z
+B Z
+B Y
+B Z
+A Y
+B Y
+B Y
+C Z
+A Y
+A Y
+A Y
+C Z
+C Z
+B Z
+A X
+C Z
+A X
+A X
+A X
+C Z
+C Z
+A Z
+A X
+A Y
+C Z
+C Z
+A X
+B Z
+C Z
+A X
+C Z
+A Z
+A X
+C Z
+C Z
+A X
+A Z
+B Y
+A X
+B Y
+C Z
+C Z
+A X
+B Z
+C Z
+B Y
+C Z
+A Z
+C Z
+A X
+B Y
+C Z
+C Z
+A Y
+C X
+A Y
+A Y
+C Z
+C Z
+A X
+A Z
+B Y
+C Z
+B Y
+C Z
+A Y
+C Z
+C Z
+C Z
+A Z
+C Z
+C Z
+B Y
+A Y
+C Z
+C Z
+B Y
+A X
+C Z
+B Y
+C Z
+B Y
+C Z
+B Y
+A X
+A Y
+B Y
+C Z
+B Z
+A Y
+C Z
+A Y
+A Z
+C Z
+B Y
+C Z
+C Z
+B Y
+A Y
+A Y
+C Z
+C Z
+A Y
+C Z
+C X
+C Z
+C Z
+C Z
+A X
+C Z
+B Y
+B Y
+C Z
+C Y
+B Z
+C Z
+B Y
+A X
+A X
+B Y
+C Z
+A X
+C Z
+B Z
+C Z
+A X
+B Y
diff --git a/2022/02/solve.py b/2022/02/solve.py
new file mode 100644
index 0000000..00d4a5f
--- /dev/null
+++ b/2022/02/solve.py
@@ -0,0 +1,40 @@
+data = [dat.split(" ") for dat in open("input").read().split("\n") if dat != '']
+
+# X Y Z = Rock Paper Scissors
+# A B C = Rock Paper Scissors
+
+def part1():
+ res = 0
+
+ choice=[1,2,3]
+ mat = [3,6,0]
+ factors = [1, 0, 2]
+ mat = [0,3,6]
+ for line in data:
+ res += choice[ord(line[1]) - ord("X")]
+ factor = factors[ord(line[0]) - ord("A")]
+ rot = mat[factor:] + mat[:factor]
+ res += rot[ord(line[1]) - ord("X")]
+
+ return res
+
+# X Y Z = lose draw win
+# 1 2 3 = Rock Paper Scissors
+# A B C = Rock Paper Scissors
+
+def part2():
+ res = 0
+
+ choice = [0,3,6]
+ mat = [3,1,2]
+
+ for line in data:
+ res += choice[ord(line[1]) - ord("X")]
+ factor = ord(line[0]) - ord("A")
+ rot = mat[factor:] + mat[:factor]
+ res += rot[ord(line[1]) - ord("X")]
+
+ return res
+
+print(f"Part 1: {part1()}")
+print(f"Part 2: {part2()}")