#include <string>
#include <iostream>
using namespace std;
int js(string a,string b){
int count=0;
for(int i=0;i<a.length();i++){
if(a.substr(i,1)==b){
count++;
}
}
return count;
}
void zm(string a){
string zmb[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
for(int i=0;i<26;i++){
cout<<zmb[i]<<"有"<<js(a,zmb[i])<<"个"<<endl;
}
}
int main() {
string a;
cin>>a;
zm(a);
return 0;
}
//另一种方法
#include <string.h>
#include <iostream>
using namespace std;
void js(string a){
int n=a.length();
int *num=new int [26];//num数组记录26个字母出现次数
for(int i=0;i<26;i++){
num[i]=0;
} //num数组全部赋值0
for(int i=0;i<n;i++){
num[a[i]-'a']++;
} //字符串计数
for(int i=0;i<26;i++){
if(num[i]!=0){
cout<<char(i+'a')<<" "<<num[i]<<endl;
}
}
}
int main(){
string a;
cin>>a;
js(a);
return 0;
}