#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

struct ErrInfo {
    string fileName;
    string lineNum;
    int count;
};



int main() {
    map<string, ErrInfo> dict;
    vector<string> stringList;
    string line;

    while (getline(cin, line)) {
        if (line.empty())
            break;
        stringList.push_back(line);
    }

    vector<string> keys;

    for (string l : stringList) {
        // 得到行号 从 右往左找
        int spaceIndex = l.rfind(' ');
        string lineNum = l.substr(spaceIndex + 1);

        // 获取路径从 前到空格位置
        string path = l.substr(0, spaceIndex);

        // 获取文件名
        int index = path.rfind('\\');
        string name = path.substr(index + 1);
        int length = name.size();
        if (length > 16)
            name = name.substr(length - 16);

        // 放入map中
        string key = name + " " + lineNum;
        auto it = find(keys.begin(), keys.end(), key);
        // 没找到就插入数组中,不插入重复的;
        if (it == keys.end())
            keys.push_back(key);

        if (dict.find(key) != dict.end()) {
            // 存在相同的
            dict[key].count++;
        } else {
            dict[key].count = 1;
        }
    }


    int i = keys.size() <= 8 ? 0 : keys.size() - 8;
    for (; i < keys.size(); i++) {
        ErrInfo info = dict.at(keys[i]);
        cout << keys[i];
        cout << " ";
        cout << info.count;
        cout << endl;
    }



    return 0;
}