#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

struct P{
    int times;//次數
    char ch;//代表字母
};

int comp(const P x,const P y){
    if(x.times==y.times)//若次數相等,依字母排序
        return x.ch<y.ch;
    return x.times>y.times;//出現次數多的排前面
}

int main(){
    char ch,str[10000];
    int N;
    P a[27];
    for(int i=0;i<26;i++){
        a[i].times = 0;
        a[i].ch = i+65;
    }//先做初始化
    scanf("%d\n",&N);

    while(N--){
        cin.getline(str,10000);
        for(int i=0;i<strlen(str);i++)
            if(isalpha(str[i])){//判斷是不是英文字母
                if(islower(str[i])) str[i]-=32;//如果是小寫則轉成大寫
                a[(int)str[i]-65].times++;//次數+1
            }
    }
    sort(a,a+26,comp);//排序
    for(int i=0;i<26,a[i].times>0;i++)//按照次數輸出,但沒出現過的不用輸出
        cout<<a[i].ch<<" "<<a[i].times<<endl;
}