/*
思路:map<string, int> 与 dequeue<string> 配合使用
    1. 创建 map<string, int> 表, 键是文件名加行号的组合,  值 是 出现的次数
    2. 创建 dequeue<string>, 像其中插入 文件名加行号的组合, 并维持其大小不超过八
    3. 注意对输入字符串的处理,
        a. 首先用 str.find_last_of('\\') 获取最后一个反斜杠的位置 
        b. 判断文件名是否大于16个字符,超过16个的话,需要截断。
*/
#include <deque>
#include<iostream>
#include <map>

using namespace std;
int main(){
    string str;
    map<string, int> mymap;
    deque<string> deq;
    while(getline(cin, str)){
        int pos = str.find_last_of('\\');
        str = str.substr(pos+1);
        pos = str.find_last_of(' ');
        if(pos > 16){
            str = str.substr(pos-16);
        }

        if(mymap.find(str) == mymap.end()){
            deq.push_back(str);
        }
        if(deq.size() > 8){
            deq.pop_front();
        }
        mymap[str]++;

    }

    for(auto s : deq){
        cout << s << " " << mymap[s] << endl;
    }
    return 0;
}