diff --git a/day_2/Cargo.toml b/day_2/Cargo.toml
new file mode 100644
index 0000000..087548f
--- /dev/null
+++ b/day_2/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "advent_of_code_2022"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+rfd = "0.10.0"
+
+phf = { version = "0.11", default-features = false }
diff --git a/day_2/day_2.iml b/day_2/day_2.iml
new file mode 100644
index 0000000..2fecef3
--- /dev/null
+++ b/day_2/day_2.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/day_2/input b/day_2/input
new file mode 100644
index 0000000..d7d6a83
--- /dev/null
+++ b/day_2/input
@@ -0,0 +1,2500 @@
+B Z
+B Z
+C Z
+C Z
+B X
+C Y
+A Y
+B Z
+A Z
+A Y
+C Z
+C X
+C Z
+C X
+B X
+B Z
+B Z
+A Z
+C Z
+C Z
+C Y
+C Z
+B Z
+B Z
+A X
+A Y
+B Z
+B Z
+C Z
+B Z
+B Z
+C X
+C Z
+A Y
+A X
+A X
+C Z
+C Z
+B X
+C X
+B Z
+A Z
+B X
+B Z
+B Z
+A Z
+B Z
+A Y
+C Z
+C Z
+B X
+C Z
+A Z
+C Z
+C Z
+C Z
+C Z
+A Z
+B Z
+C Z
+A Z
+C Z
+C Z
+C Y
+A Y
+C X
+C Z
+C Z
+C Z
+C Z
+A Y
+C X
+A Y
+A Y
+C X
+B Z
+A Y
+C Y
+C Z
+B Z
+C Z
+B Z
+B Z
+B Z
+C Y
+B Z
+A Y
+C Z
+C Z
+A X
+C X
+C Z
+A X
+C Z
+C Z
+C X
+A Z
+C Z
+C Z
+B Z
+C Y
+A Y
+C Y
+C Y
+A Z
+B Z
+C Z
+C Z
+C Z
+A Z
+C Z
+B X
+C Z
+A Y
+C Z
+C X
+C Y
+C Y
+B Z
+C Z
+C Z
+A X
+C X
+C Z
+C Z
+A Z
+B Z
+B Z
+C X
+C Z
+B Z
+C X
+B Z
+C Z
+B Z
+B Z
+B Z
+B Z
+C Y
+C Z
+B Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Z
+C Z
+B Z
+C Z
+C Y
+C Z
+C Z
+C X
+C Z
+C Z
+C Y
+C Z
+C Y
+C X
+B Z
+B Z
+C Z
+A Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Z
+C Z
+B Z
+C Z
+C Z
+B X
+B Z
+C Z
+C Z
+A Z
+A Z
+B Z
+C Z
+C Z
+A Z
+B X
+C X
+A Z
+C Z
+C Z
+B Y
+B Z
+B Z
+A Y
+B Z
+C Z
+C Z
+A Y
+B Z
+C Y
+A Z
+C X
+A Z
+A Y
+C X
+C Y
+C Z
+B Z
+C Z
+A Y
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+A X
+C Z
+C Z
+A Y
+C Z
+A Y
+C Z
+B Z
+C Z
+A Y
+C Z
+C Y
+C Z
+B Z
+C X
+A Y
+C X
+A Y
+B X
+C Y
+B X
+C Z
+C Y
+C Z
+C Y
+C Y
+B Z
+C Z
+A Y
+C X
+C Z
+C Z
+B Z
+A Z
+C Z
+C Z
+C Y
+C Z
+C Y
+B X
+C Z
+C Z
+C Z
+C X
+A Y
+B Z
+C Z
+C Z
+C Z
+B Z
+A Y
+A Z
+A Y
+B Z
+A Z
+A Y
+B Z
+C Z
+A Y
+A Z
+B Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+A Z
+A Y
+C X
+C Z
+A Z
+C Z
+A Y
+C Z
+A Y
+C Z
+C Z
+A X
+C Y
+C Z
+A X
+C X
+A X
+B Z
+C Z
+A X
+C Z
+B Z
+A X
+C Z
+A Y
+A Z
+C Y
+A Y
+C Y
+A Z
+B Z
+A Z
+B Z
+C X
+C X
+C Z
+C Z
+B Z
+A Y
+C Z
+A Y
+C Z
+B Z
+B X
+B X
+B X
+A Z
+B Z
+C X
+C Z
+A Y
+C Z
+B X
+A Y
+C X
+B Z
+C Z
+C Z
+C Z
+C Z
+A Z
+B Z
+B Z
+B X
+A Y
+C Z
+C X
+A Y
+C Z
+C Z
+C Z
+A Y
+A X
+B Z
+C Z
+A Z
+C Y
+A Z
+B Z
+A Y
+C Z
+C Z
+B Z
+A Y
+B Z
+A Z
+A Y
+C Z
+A X
+C Z
+C Z
+B Z
+C Z
+C X
+A Y
+A Y
+B Z
+C Z
+B X
+A Y
+C Z
+C Z
+A X
+A Z
+C Z
+C Z
+A Y
+C Z
+C Y
+A Y
+A Y
+B Z
+C Z
+C Z
+C X
+C Z
+A Y
+B Z
+C Z
+C Z
+A Y
+B Z
+C Z
+C Z
+B Z
+A Y
+B Z
+C Z
+C Z
+C Z
+C X
+C Z
+C Z
+C Z
+C Y
+C X
+C Y
+C Z
+B Z
+A Y
+C X
+B Z
+C X
+C X
+C Z
+A Z
+C Z
+B X
+A Y
+C Z
+B Z
+A X
+B X
+C X
+C Z
+C Z
+B Z
+B Z
+C Z
+C Z
+A Y
+B Z
+A Z
+B Z
+A Z
+A X
+C Z
+A Z
+A Z
+B X
+A Z
+B Z
+B Z
+A Y
+C Y
+B Z
+B Z
+B Z
+B Z
+C Z
+B Z
+C Z
+B Z
+C Y
+C Z
+C Z
+C X
+C Z
+C Y
+C Y
+C X
+A Y
+C Y
+B Z
+C Z
+A Y
+A Z
+B X
+C Z
+C Z
+A Y
+A Y
+A Y
+C Z
+A Z
+C Z
+B Y
+A X
+A Y
+C Z
+A X
+B Z
+C Z
+C Z
+B Z
+C Z
+A Z
+C X
+C Z
+B Z
+B Z
+C Z
+B Z
+A Z
+C Z
+C Z
+A Y
+B Z
+A Y
+B Z
+C Z
+B Z
+C Z
+B Z
+B Z
+A Y
+C Y
+B Z
+C Z
+A Z
+B Z
+C Z
+C Z
+A Z
+B Z
+C Z
+A Y
+A Z
+C X
+B Z
+A Y
+A Y
+C Z
+A Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+A Y
+A X
+C Z
+B Z
+C Z
+C Z
+C Y
+C Z
+A X
+A Z
+C Z
+B X
+A Z
+B X
+B X
+A Y
+A Y
+A Y
+C Z
+C Z
+C Z
+A Z
+C X
+A Y
+C Z
+B Z
+C Z
+A X
+B Z
+A X
+A Z
+C Z
+C Z
+C Z
+B X
+B Z
+C X
+B Z
+C Z
+C Z
+C Z
+A Y
+B Z
+B Z
+C Z
+A X
+B Z
+A Y
+C Z
+A Y
+A Y
+C Z
+C Z
+A Y
+C X
+C Z
+A Y
+C Z
+B Z
+B Z
+C Z
+C Y
+B Z
+B Z
+C Z
+A Y
+C Z
+B Z
+B X
+A Y
+A Z
+C Z
+B Z
+C Z
+C X
+A Y
+A Z
+A Y
+B Z
+A Z
+B Z
+A Y
+A Y
+B Z
+C Z
+C Z
+C Z
+A Y
+A X
+B Z
+A Y
+C Z
+B X
+C Z
+C Z
+A Y
+C Z
+C Z
+C Y
+C Z
+C Y
+B Z
+B Z
+C Z
+C Z
+B Z
+B Z
+B Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C X
+C Z
+C Z
+B Z
+B Z
+C X
+A Y
+C Y
+C X
+B Z
+C X
+B Z
+C Z
+A Z
+C Y
+C Z
+C X
+B X
+A Y
+C Y
+A X
+C Z
+C Z
+C Z
+C Z
+A Y
+C Y
+C Z
+A Y
+C Z
+C Z
+B Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Z
+C Z
+B Z
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+A Y
+C Z
+C Z
+A X
+C Z
+C Z
+A X
+B Z
+C Z
+A Y
+C X
+C Z
+A Z
+C Y
+A Y
+C Z
+B Z
+C Z
+B Z
+C X
+C Y
+B Z
+C Z
+C Z
+A Y
+C X
+C Z
+C Z
+B X
+C Z
+C Z
+C Z
+C Z
+A Z
+A Y
+C Z
+B Z
+C Z
+B Z
+A Y
+B Z
+C Z
+B Z
+B Y
+C Z
+B Z
+A Y
+C Z
+C Y
+C Z
+A X
+B Z
+C Z
+A Z
+A Z
+B Z
+A X
+B Z
+B Z
+C Y
+C Z
+C Z
+B Y
+B Z
+C Z
+A Y
+B X
+B Z
+C Z
+C Z
+C Z
+B X
+A Y
+A Y
+B Z
+B Z
+C Z
+B Z
+C Z
+C Y
+B Z
+B Z
+B X
+A Y
+A Y
+A Y
+B X
+C Z
+C Z
+B Z
+C Z
+C X
+B Z
+C Z
+C Z
+B Z
+C Z
+C Z
+A Y
+B Z
+A Y
+C Y
+B Z
+B Z
+B Z
+C X
+C Z
+C Z
+C Z
+C X
+C Z
+A X
+B Z
+C Z
+C Z
+A Y
+B Z
+C Z
+A Y
+C Z
+B Z
+C Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C Y
+C Z
+C Y
+C X
+C Z
+C Y
+C Z
+A Y
+B Z
+B Z
+A Y
+B Z
+B X
+B X
+A Z
+C Y
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+C Z
+C Y
+C Z
+B Z
+C Z
+C Z
+C Z
+B Z
+B Z
+C Z
+B X
+C Y
+A X
+C Z
+A Z
+C Y
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+B Z
+A Y
+A Z
+B X
+C X
+A Y
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Y
+C Z
+C Z
+C Z
+A Y
+A Z
+C Z
+A Y
+C Z
+C Z
+B Z
+B Z
+B X
+A Y
+B Z
+C Y
+C Z
+B Z
+A Z
+A Y
+A X
+C Z
+B Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+A Y
+A Z
+C Z
+C Z
+A Y
+C Y
+C Z
+A X
+B X
+B X
+C Z
+C Z
+B Z
+A Y
+A Y
+A Y
+A X
+C Z
+B Z
+B Z
+B Z
+A Y
+C Y
+B Z
+A Z
+C Z
+B X
+C Z
+C Z
+C X
+C X
+C Z
+A Y
+B Z
+C Z
+A Y
+C Z
+A X
+C Z
+B Z
+B Z
+B Z
+C Z
+B Z
+C Z
+A Z
+C Z
+B Z
+C Z
+A Y
+C Z
+A Z
+C Z
+C Y
+B Z
+A Z
+C Z
+B Y
+A Z
+C Z
+A X
+C Z
+B Z
+A X
+C Z
+B Z
+C Z
+C X
+A Y
+C Z
+B Z
+A X
+C Z
+B Z
+C Z
+A Y
+C Z
+C Z
+C Z
+B Z
+C Y
+C Z
+C X
+A Z
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+A Z
+C Z
+A Y
+A X
+C Z
+A Y
+C X
+C Z
+B Z
+C Z
+B Z
+B Z
+A Y
+B Z
+A Y
+A Y
+C X
+B Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A Y
+B Z
+C Z
+A Y
+B Z
+C Z
+C Z
+A Y
+B Z
+C Z
+C Y
+B Z
+C Z
+B Z
+A Z
+C X
+B Z
+C Y
+C Z
+C Z
+C X
+C X
+A X
+C Z
+B Z
+A Z
+C Z
+B Z
+B X
+C Z
+C Z
+C Z
+C Z
+B Z
+B X
+C Z
+C Z
+C Z
+B Z
+C Y
+B Z
+B X
+C Y
+C Z
+C Z
+B Z
+A Z
+C Y
+C X
+C Z
+B Z
+C Z
+C Z
+C Z
+B Z
+B X
+C Z
+C Z
+A Y
+C Z
+C Y
+A Y
+A Z
+B Y
+C Z
+A Y
+C X
+C X
+C X
+C Z
+B Z
+C Z
+C Z
+B Z
+C Z
+A Y
+C Z
+C Z
+B Z
+C X
+C Z
+B Z
+C Z
+A Y
+C Z
+C Z
+C X
+C Z
+B Z
+C Y
+C Z
+A Z
+C Z
+B Z
+A Z
+B Z
+C Z
+A Y
+B Z
+C Z
+C Z
+B Z
+A Z
+C Z
+C X
+C Z
+C Z
+A Y
+A Y
+A Z
+C Z
+A Y
+A X
+C Z
+C Z
+C Z
+C X
+A Z
+C Z
+A Y
+C Z
+C Z
+C Y
+C Z
+C Z
+B Z
+C Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C Z
+B Z
+C Z
+C Z
+C Y
+B Z
+C Y
+B Z
+B X
+C Z
+C Z
+A Y
+B Z
+C Y
+B Z
+B Z
+B Z
+B Z
+C Z
+C Y
+A X
+C Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+A Y
+C Z
+C Z
+A Y
+A Y
+C Z
+C Z
+B Z
+B Z
+C X
+C Z
+C Z
+A X
+C Z
+C Y
+C Z
+B Z
+C Z
+A Y
+C Z
+C Z
+C Z
+C X
+A Y
+C Z
+C X
+B Z
+C Z
+C Z
+C Y
+C Z
+A Y
+B Z
+B Z
+A X
+C Y
+C Z
+B X
+A X
+C Z
+C Z
+C Z
+C Z
+C Y
+A X
+B Z
+C Z
+C Z
+A Y
+B X
+A Z
+A Y
+B Z
+C Z
+C X
+A X
+C X
+C Y
+C Z
+B X
+A X
+C Z
+C Z
+B X
+A Y
+A Y
+A Y
+C Z
+C Z
+A Y
+C Z
+A Z
+A Y
+C Z
+B X
+C Z
+C Z
+C X
+C Z
+C Z
+A Z
+B Z
+A Z
+C Y
+C Y
+C Y
+C Z
+C X
+C Z
+A Y
+B Z
+C Z
+B Z
+C Z
+A Y
+C X
+C Z
+C Z
+B Z
+C Z
+C Y
+A Y
+B Z
+B Z
+B X
+B Z
+C Z
+A Y
+C Z
+B Z
+A Y
+C Z
+C Z
+B Z
+A Y
+C Z
+C Z
+C Z
+C Z
+A Z
+A Y
+C Z
+C X
+A Z
+A Z
+C Z
+C Z
+C Z
+A Y
+B Z
+B Z
+B Z
+B Z
+C Z
+C X
+C Z
+C Z
+B Z
+B Z
+C Z
+C X
+A Z
+A Y
+C Z
+B Z
+C X
+C X
+A Y
+A Y
+C Z
+B X
+C Z
+C Y
+C X
+A Y
+C Y
+C Z
+C Z
+B Z
+A Z
+C Z
+C Z
+C Z
+C X
+C Z
+B Z
+A Y
+C Z
+B Z
+C Z
+A Y
+A Y
+B X
+B X
+B Z
+C Z
+C Z
+C Z
+C Z
+C X
+C Z
+B Z
+C X
+C X
+A Z
+B Y
+C Z
+C Z
+C X
+B Z
+C Z
+C Z
+A Z
+C Z
+C X
+A Y
+A Z
+C Z
+B Z
+C Z
+B X
+A Y
+C Z
+C Z
+B Z
+C X
+B Z
+B Z
+C Z
+C Z
+C Z
+B Z
+A Z
+C Z
+A X
+C Z
+C Z
+C Z
+C X
+C X
+B Z
+C Y
+C Z
+C Y
+A Z
+A Y
+A X
+B Z
+A Y
+C Z
+C Y
+B Z
+B Z
+B Z
+B Y
+B Z
+A X
+C Z
+A Y
+B Z
+A Y
+C Z
+C Z
+C Z
+A Y
+C Z
+B Z
+C Z
+A Z
+C Y
+C X
+A Y
+A Y
+A Y
+B Z
+C Y
+C Z
+C Z
+C X
+B Z
+A Y
+C Z
+C Z
+B Z
+A Z
+C Z
+B Z
+C X
+C Z
+B Z
+C Z
+C Z
+B Y
+B Z
+C Y
+B Z
+A X
+C Y
+B Z
+C Z
+A Y
+C Z
+A Z
+C Z
+B Z
+A X
+C Y
+C Y
+A Y
+A Z
+B Z
+A Z
+C Z
+C Y
+C X
+C Z
+A Y
+C Z
+A Y
+C Z
+C Z
+C Z
+C Y
+C X
+C X
+B Z
+A Y
+C Z
+A X
+C Z
+A Z
+C X
+A X
+A Z
+A Y
+C Z
+C Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C Z
+A Y
+C Z
+A Z
+C Z
+C Z
+C X
+C X
+C Z
+C Z
+C Z
+C Z
+C Z
+A Y
+B Z
+B Z
+C Z
+B X
+C Y
+C Z
+C Z
+C Z
+A Y
+B X
+C Z
+C X
+B Z
+A Z
+B X
+C Z
+C Z
+B Z
+C X
+B Z
+C Z
+A Y
+C X
+A Y
+A Z
+C Y
+C Z
+C Y
+C Z
+C X
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Z
+C X
+C Z
+C X
+B Z
+A Z
+A X
+C Z
+A Y
+C Y
+C Z
+C Z
+C Z
+B Z
+B Z
+A X
+C Z
+B Z
+C Z
+C Z
+A X
+C Z
+B Z
+C X
+C Z
+C Z
+C Z
+C Z
+B X
+C X
+B Z
+C Z
+B Z
+A Y
+C Z
+A Y
+B X
+C Z
+C Z
+C Z
+C Z
+A Y
+C Z
+C Z
+B Z
+C Z
+C Z
+B Z
+A Y
+C X
+C Z
+C Z
+A Y
+C X
+B Z
+B Z
+A Y
+C Z
+B Z
+C Z
+A Y
+B Z
+A Z
+C Z
+B Z
+C Z
+B Z
+C X
+B Z
+C Z
+C Z
+C Z
+A Y
+A Y
+C Z
+B Z
+A Y
+B X
+C Z
+B Z
+C X
+C Z
+B Z
+B Z
+C Y
+C Y
+A Z
+C X
+C Z
+B Z
+A Y
+C Z
+C Z
+B Z
+A Y
+B Z
+A Z
+C Z
+B Z
+B Z
+B Z
+C Z
+C X
+B Z
+C Z
+B Z
+C Z
+C Z
+A Y
+A Y
+C Z
+C X
+A Y
+B Z
+C Z
+A Z
+C Z
+B Z
+A Y
+C Z
+C X
+C Z
+C Z
+C Z
+C Z
+A Y
+C Z
+C X
+B Z
+B X
+C Z
+A Y
+C Y
+C Z
+C Z
+C X
+C Z
+C X
+C X
+C Z
+B Z
+B X
+A Z
+A Z
+C Z
+C Y
+A Y
+C Z
+A Y
+C Z
+C Z
+C Z
+B Z
+B Z
+C Z
+B Z
+C Z
+C Z
+C Y
+B Z
+B Z
+C Z
+C Z
+B Z
+C X
+A Z
+C Z
+C Z
+A Y
+A Y
+A Y
+C Z
+C Z
+B Z
+A Z
+A X
+A Y
+C X
+C Z
+B Z
+C X
+C X
+B Z
+B Z
+B X
+C Z
+C Y
+B Y
+C Z
+C Z
+C Z
+B Y
+A Y
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+B X
+A Z
+A X
+C Z
+A Y
+A Z
+C X
+C Z
+C Y
+C Z
+C Z
+C Z
+B Z
+B Z
+A Y
+A Z
+C X
+B X
+B X
+C Z
+C Y
+C Z
+C Z
+C Y
+C Z
+C Z
+A Z
+B Z
+C Z
+A Y
+C Z
+C Z
+C Z
+A Y
+C Z
+B Y
+B X
+C Z
+A Y
+B X
+C Y
+A Y
+C Z
+C Z
+C Y
+A Z
+B Z
+C Z
+C Z
+B Z
+C Y
+C X
+C Y
+C Y
+B Z
+C Z
+B Z
+C Z
+A Y
+A Y
+A Y
+B Z
+C Z
+A Z
+C Z
+C Y
+B Z
+B Z
+C Y
+C Z
+C Z
+A Y
+C Z
+C Z
+B Z
+C Z
+C X
+A X
+A Y
+A Y
+B Z
+C Z
+B X
+A Y
+B Z
+C Z
+C Z
+B Z
+A Y
+C Z
+C Z
+B X
+A Y
+C Z
+B X
+A Y
+C Z
+C X
+A Z
+B Z
+B Z
+C Z
+C X
+A Y
+C Z
+C Z
+A Y
+B Z
+C Z
+A Y
+C Z
+A Y
+C Z
+B Z
+C Z
+A X
+B Z
+C Z
+C Z
+C X
+B Y
+A Y
+A X
+C X
+B Z
+C Z
+C X
+B Z
+C Z
+C Z
+C Z
+C Z
+A Z
+C Z
+A Y
+B X
+C Z
+C Z
+B Z
+B Z
+C X
+B Z
+B X
+C Z
+C Z
+C Z
+A Y
+C Z
+C Z
+C Z
+C Z
+A Y
+A Z
+B Z
+C Y
+A Z
+C Z
+C Z
+C Z
+B X
+B Z
+C Z
+B Z
+C Z
+C X
+C Z
+A X
+C Z
+C Z
+C Z
+C Z
+C Z
+A Y
+A Y
+B Z
+B Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+A Z
+A Y
+C Z
+A Z
+A Y
+C Z
+C Z
+C Y
+A Y
+B Z
+C X
+B Z
+A Y
+C Z
+A Y
+C Z
+B Z
+B Z
+B Z
+C Z
+C Z
+A Z
+A Y
+C X
+A Y
+C Z
+A Y
+C Z
+C Z
+A Y
+B Z
+C Z
+C Y
+C Z
+B Z
+B Z
+B Z
+C Y
+C Z
+B Z
+C X
+B Z
+A Y
+B Z
+C Z
+A Y
+C Z
+C Y
+C Z
+C Z
+C Z
+C Z
+B X
+B Z
+C Z
+C Z
+A Y
+C Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C X
+B Z
+C X
+A Y
+B X
+A Y
+C Z
+B Z
+A Y
+B Z
+C Z
+A Y
+C Z
+C Z
+C X
+C X
+C Z
+B Z
+C X
+C Z
+A X
+A Z
+C Z
+C Y
+A Y
+A X
+B Z
+C Z
+C Z
+B Z
+A Y
+C Z
+A X
+B Z
+B Z
+A X
+C Y
+C Z
+A Y
+B Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Z
+C Z
+B X
+B Z
+C Z
+A X
+C Z
+A X
+C Z
+A Y
+C Z
+A Z
+C Z
+C Z
+C Z
+B X
+A Y
+A Y
+A X
+B Z
+B Z
+C Y
+C Z
+B Z
+A X
+C Z
+A Y
+C Z
+C Z
+B Z
+C Z
+C X
+B X
+B Z
+B X
+C Z
+C Z
+B Z
+A Z
+C Z
+C Y
+C Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A X
+A Z
+C Z
+B Z
+B Z
+B Z
+C X
+A Z
+C Z
+C Z
+B Z
+B Z
+C Z
+B X
+C Z
+B Z
+C Z
+C Z
+C Z
+C Z
+A X
+A Z
+A Y
+C Z
+A Z
+A Y
+C Z
+A Z
+C Z
+A Y
+C Z
+B Z
+C Z
+A Y
+C Y
+A Y
+B Z
+A Y
+B Z
+C Z
+B X
+C X
+C Z
+B Z
+A Z
+C Z
+B X
+C Y
+C Z
+C Y
+A X
+C X
+C X
+B Z
+A Y
+C Z
+A Z
+B Z
+C Z
+C X
+C Z
+C Z
+C Z
+C Z
+C Z
+B Z
+B Z
+C Z
+C Z
+C Z
+C Z
+C X
+A Z
+C Z
+A Y
+A Y
+C Z
+C Z
+C Y
+C Z
+A Y
+C Z
+B Z
+B X
+A Z
+A Y
+A Y
+C Z
+A Y
+C Z
+A X
+A Y
+B X
+C Z
+C Z
+A Z
+C Z
+A Y
+B Z
+A Y
+C Z
+C Z
+B Z
+C X
+C Z
+C Z
+C Z
+C Y
+C Z
+B X
+C Z
+C Z
+B X
+A Z
+C Z
+C X
+C X
+B Z
+C Z
+C Z
+B Z
+C Z
+C Z
+B Z
+B Z
+B Z
+B Z
+B Z
+A Z
+C X
+C Y
+C Z
+A Y
+C Z
+B Z
+A Y
+C Z
+C Z
+B Z
+B Z
+C Z
+A Z
+A X
+A Y
+C Z
+A Z
+C Z
+C X
+B Z
+C Z
+A X
+B Z
+B X
+C Z
+C Z
+C Z
+B X
+C Z
+B Z
+B Z
+A Y
+A Y
+A Z
+C Z
+C Z
+C Z
+B Z
+C Z
+B Z
+C Z
+A Z
+C Z
+C X
+C Z
+C Z
+C Z
+B Z
+A Y
+C Y
+C Z
+C Z
+C Z
+C Z
+B Z
+C Y
+C Z
+A Z
+C Y
+C Z
+B X
+A Y
+A Y
+A X
+B Z
+B Z
+C Z
+A Y
+B X
+A Y
+C X
+C Z
+A Y
+C X
+C Z
+C Z
+A Z
+C X
+C Z
+C X
+C Z
+A Y
+C Z
+C Z
+B Z
+C Z
+C Y
+A Z
+C X
+C Y
+C Z
+C Z
+C Y
+B Z
+B Z
+C X
+C Z
+C Z
+C Z
+C Z
+B Z
+C Z
+C Z
+C Z
+B Y
+C Y
+C Z
+B Z
+C Z
+C Z
+C Y
+B Z
+A Y
+A Z
+C Y
+C Y
+C Z
+C X
+C Z
+A Z
+C Z
+C Z
+A Y
+A Z
+C Z
+A Z
+C Z
+B Z
+B X
+B Z
+B Z
+A Z
+C Z
+A Y
+C Z
+C Y
+C Z
+A Z
+B Z
+B Z
+B Z
+C Z
+B Z
+A Z
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+A Z
+C Z
+A Z
+A X
+B Z
+A Y
+C X
+A Z
+B X
+B Y
+A Y
+B Z
+A Z
+B Z
+B Z
+C Z
+A Z
+B Z
+B Z
+A Y
+C Y
+C Y
+A X
+C Z
+C Z
+C Z
+C X
+C Z
+C Z
+C Z
+C Z
+B Z
+A Y
+C Z
+C Z
+C Z
+A Z
+C X
+C Z
+B Z
+C Y
+B X
+B Y
+C Z
+C Z
+A X
+C Y
+C X
+B Z
+B Z
+C Z
+B Z
+C Y
+C Y
+C Y
+C X
+C Z
+C Z
+C Z
+C X
+A Y
+C Z
+C Z
+B Z
+A Z
+C Z
+A Y
+B X
+C Z
+C X
+C Z
+A Z
+B Z
+A Y
+C Z
+C Z
+C Z
+A Z
+C Z
+C Z
+C X
+C Z
+C Z
+B Z
+C Z
+B Z
+C X
+C Z
+A Y
+A Y
+C Z
+C Z
+B Z
+C Z
+C Z
+C X
+C Z
+A Y
+C Z
+C Z
+C Z
+B Z
+C Z
+A Y
diff --git a/day_2/src/main.rs b/day_2/src/main.rs
new file mode 100644
index 0000000..8d7679e
--- /dev/null
+++ b/day_2/src/main.rs
@@ -0,0 +1,71 @@
+use std::collections::HashMap;
+use std::fs::File;
+use std::io::{BufRead, BufReader};
+use phf::phf_map;
+
+
+static scores: phf::Map<&'static str, u8> = phf_map! (
+ "A" => 1, //rock
+ "B" => 2, //paper
+ "C" => 3, //scizzors
+);
+
+// figuring out a way to do this :/
+// 1 2 = lose
+// 1 3 = win
+// 2 1 = win
+// 2 3 = lose
+// 3 1 = lose
+// 3 2 = win
+
+static possibilities: phf::Map<&'static u8, &'static u8> = phf_map! {
+ 12 => 0,
+ 13 => 6,
+ 21 => 6,
+ 23 => 0,
+ 31 => 0,
+ 32 => 6,
+ 11 => 3,
+ 22 => 3,
+ 33 => 3,
+};
+
+static shape_map: phf::Map<&'static String, &'static String> = phf_map! {
+ "X" => "A",
+ "Y" => "B",
+ "Z" => "C",
+};
+
+struct Play {
+ them: u8,
+ you: u8
+}
+
+
+fn main() {
+ println!("Hello, world!");
+
+ let current_path = std::env::current_dir().unwrap();
+ let res = rfd::FileDialog::new().set_directory(¤t_path).pick_file().unwrap();
+ let book = File::open(res.as_path()).unwrap();
+
+ let reader = BufReader::new(book);
+ let mut complete_score:u32 = 0;
+ for line in reader.lines() {
+ let play = parse_line(line.unwrap());
+ let score = get_score(play);
+ println!("score for line {} is {}", line.unwrap(), score);
+ complete_score += score;
+ }
+
+ println!("the completed score for the whole book is {}",complete_score)
+}
+
+fn parse_line(line: String) -> Play {
+ let mut temp = line.split(' ').collect::>();
+ return Play {them: scores[temp[0].parse().unwrap()], you: scores[temp[1].parse().unwrap()] }
+}
+
+fn get_score(p: Play) -> u8 {
+ return possibilities[p.you*10+p.them]+scores[p.you];
+}