import Data.List toScore :: Char -> Integer toScore b = snd . head . dropWhile (\(c, i) -> c /= b) $ zip ['A'..'Z'] [1..26] nameScore :: (Integer, String) -> Integer nameScore (i, s) = i * (sum (map toScore s)) listScore :: [String] -> Integer listScore = sum . map nameScore . zip [1..] main = do file <- readFile "22.txt" let names = sort . read $ file :: [String] putStrLn . show . listScore $ names