I have solved the [designer pdf](https://www.hackerrank.com/challenges/designer-pdf-viewer/problem) question with haskell. The code works. I am posting the code here to know how I could have done it better. > * First line contains the weight of each alphabet > * Second line contains the word. > > Sample input > ``` 1 3 1 3 1 4 1 3 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 zaba > ``` > Output > ``` > 28 > ``` > Explanation > each character would take 1 space and multiply it with the max weight > 4 characters * 1 space * 7 weight = 28 > 'z' has the max weight of 7. Code import Data.List import Data.Maybe getintval::(Maybe Int) -> Int getintval Nothing = 1 getintval (Just x) = x solve'::[Char]->[(Char, Int)] -> Int solve' ch lst = k $ map getintval $ map (\x -> finder' x) ch where k::[Int] -> Int k fb = (*) (length ch) $ foldl (\acc x -> max acc x) 1 fb finder'::Char -> Maybe Int finder' g = case i of Just(x1,x2) -> Just x2 Nothing -> Just 1 where i = find(\(val1, val2) -> val1 == g) lst solve::[Char] -> [Char] -> Int solve wght val = solve' val rec where rec::[(Char, Int)] rec = zipWith (\x y -> (x, y)) ['a'..'z'] word1 word1::[Int] word1 = map(read::String->Int) $ words wght main::IO() main = do weight <- getLine pdfstr <- getLine putStr . show $ solve weight pdfstr