#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;
}