import Data.Char
import Data.Maybe
import Control.Monad
main = do
  s <- getContents
  let d = foldl1 f2  $ map (f1 . toLower) s
  forM_ ['a'..'z'] $ \k -> do
    putStrLn $ foldl1 (++) [[k], " : ", show $ fromJust $ lookup k d]

f1 c | elem c ['a'..'z'] = [(k, if c==k then 1 else 0) | k<-['a'..'z']]
     | otherwise = [(k,0) | k<-['a'..'z']]
f2 d1 d2 = [(k, (fromJust $ lookup k d1) + (fromJust $ lookup k d2)) | k<-['a'..'z']]
