diff --git a/2022/aoc.cabal b/2022/aoc.cabal
index 41b5d48..3166d85 100644
--- a/2022/aoc.cabal
+++ b/2022/aoc.cabal
@@ -26,6 +26,7 @@ source-repository head
 library
   exposed-modules:
       Aoc.Day1
+      Aoc.Day2
   other-modules:
       Paths_aoc
   hs-source-dirs:
diff --git a/2022/app/Main.hs b/2022/app/Main.hs
index 0570781..d6bf0ab 100644
--- a/2022/app/Main.hs
+++ b/2022/app/Main.hs
@@ -3,6 +3,7 @@ module Main (main) where
 
 import System.Environment (getArgs)
 import qualified Aoc.Day1
+import qualified Aoc.Day2
 
 main :: IO ()
 main = do
@@ -13,6 +14,7 @@ main = do
   contents <- readFile ("input/" ++ (show day) ++ ".txt")
 
   let f = case day of 1 -> Aoc.Day1.solve
+                      2 -> Aoc.Day2.solve
                       _ -> error "unknown day"
 
   putStrLn $ show $ f part contents
diff --git a/2022/src/Aoc/Day2.hs b/2022/src/Aoc/Day2.hs
new file mode 100644
index 0000000..ba86738
--- /dev/null
+++ b/2022/src/Aoc/Day2.hs
@@ -0,0 +1,23 @@
+module Aoc.Day2 (solve) where
+
+solve 1 input = sum $ map scoreGame guide
+  where
+    guide = map words . lines $ input
+
+    loss = 0
+    draw = 3
+    win  = 6
+
+    rock     = 1
+    paper    = 2
+    scissors = 3
+
+    scoreGame ["A", "X"] = rock + draw
+    scoreGame ["A", "Y"] = paper + win
+    scoreGame ["A", "Z"] = scissors + loss
+    scoreGame ["B", "X"] = rock + loss
+    scoreGame ["B", "Y"] = paper + draw
+    scoreGame ["B", "Z"] = scissors + win
+    scoreGame ["C", "X"] = rock + win
+    scoreGame ["C", "Y"] = paper + loss
+    scoreGame ["C", "Z"] = scissors + draw