import Control.Applicative
import Control.Monad
import Data.Array
import Data.Array.ST
import Data.Char
import Data.List
import qualified Data.Map as M
import qualified Data.Set as S
import Text.Printf

readInts :: IO [Int]
readInts = map read . words <$> getLine

main :: IO ()
main = do
  s <- getContents
  forM_ (M.toList $ count s) $ \(c, n) -> do
    printf "%c : %d\n" c n

count :: String -> M.Map Char Int
count = foldr f mp0 . filter isLower . map toLower
 where
  f c mp = M.insertWith (+) c 1 mp
  mp0 = M.fromList [ (c, 0) | c <- ['a'..'z'] ]

