part1 :: [Step] -> Int
part1 steps =
  let start@(Placement _ startPos) = Placement N (0, 0)
      (Placement _ endPos) = foldl step start steps
  in distance startPos endPos
part1 :: [Step] -> Int
part1 steps =
  let start@(Placement _ startPos) = Placement N (0, 0)
      (Placement _ endPos) = foldl step start steps
  in distance startPos endPos
part1 steps =
  let start@(Placement _ startPos) = Placement N (0, 0)
      (Placement _ endPos) = foldl step start steps
  in distance startPos endPos