import Data.Functor( (<$>))
import Data.List( group, sort)
import Data.Char( isLetter, toLower)

main = do
    str <- (toLower <$>) . filter isLetter <$> getContents
    let
	normalized = group . sort $ str++['a'..'z']

	count list@(x:_) = (x, length list	-1)

	answer = count <$> normalized

    printCount `mapM_` answer	
      where
	printCount (c,n) = putStrLn $ [c]++" : "++show n


