#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string>
#include<vector>
#include<iostream>
#include<map>
using namespace std;

//给出一个01字符串(长度不超过100),求其每一个子串出现的次数。

//输入包含多行,每行一个字符串。

//对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。

int main() {
    char str[101];
    scanf("%s", str);
    string str1 = str;
    map<string, int> myMap;
    for (int i = 0; i < str1.size(); i++) {
        for (int j = i; j < str1.size(); j++) {
            myMap[str1.substr(i, j - i + 1)]++;
        }
    }
    map<string, int>::iterator it;
    for (it = myMap.begin(); it != myMap.end(); it++) {
        if (it->second >= 2) {
            printf("%s %d\n", it->first.c_str(), it->second);
        }
    }
    return 0;
}