#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
#include <map>
#include <queue>
#include <cmath>
using namespace std;

int main() {
    string str;
    map<string, int> mymap;
    while (getline(cin, str)) {
        //printf("%s\n", str.substr(1, 0).c_str());
        int size = str.size();
        for (int i = 0; i < size; i++) {
            for (int j = i; j < size; j++) {
                string sub = str.substr(i, j - i + 1);
                if (mymap.find(sub) != mymap.end()) { //有这个元素
                    mymap[sub]++;
                } else { //没这个元素
                    mymap[sub] = 1;
                }
            }
        }
        //sort(mymap.begin(), mymap.end());
        for (auto it = mymap.begin(); it != mymap.end(); it++) {
            if (it->second > 1) {
                printf("%s %d\n", it->first.c_str(), it->second);
            }
        }


    }
}