solve :: String -> IO ()
solve input = do
  let prefix = head . lines $ input
  let ks = keys $ allHashes prefix
  print . fst $ ks !! 63

  let stretchedHashes = map (\x -> iterate stretchHash x !! 2016) $ allHashes prefix
  let stretchedKeys = keys stretchedHashes
  print . fst $ stretchedKeys !! 63
solve :: String -> IO ()
solve input = do
  let prefix = head . lines $ input
  let ks = keys $ allHashes prefix
  print . fst $ ks !! 63

  let stretchedHashes = map (\x -> iterate stretchHash x !! 2016) $ allHashes prefix
  let stretchedKeys = keys stretchedHashes
  print . fst $ stretchedKeys !! 63
solve input = do
  let prefix = head . lines $ input
  let ks = keys $ allHashes prefix
  print . fst $ ks !! 63

  let stretchedHashes = map (\x -> iterate stretchHash x !! 2016) $ allHashes prefix
  let stretchedKeys = keys stretchedHashes
  print . fst $ stretchedKeys !! 63