uses crt;
var st:string;
m:array[1..26]of integer;
i:integer;
begin
clrscr;
write('-> ');
readln(st);
for i:=1 to length(st) do inc(m[ord(lowcase(st[i]))-96]);
for i:=26 downto 1 do if m[i]>0 then
writeln(chr(i+96),' - ',m[i]);
readln;
end.