//土尔逊Torson 编写于2023/06/13
#include <iostream>
#include <cstdio>
#include <string>
#include <map>

using namespace std;

int main() {
	string str;
	while (cin >> str) {
		map<string, int> number;
		for (int i = 0; i <= str.size(); ++i) {
			for (int j = 0; j < i; ++j) {
				string key = str.substr(j, i - j);  //每个子串
				number[key]++;                      //映射值加1
			}
		}
		map<string, int>::iterator it;              //定义迭代器
		for (it = number.begin(); it != number.end(); ++it) {
			if (1 < it->second) {
				cout << it->first << " " << it->second << endl;
			}
		}
	}
	system("pause");
	return EXIT_SUCCESS;
}
// 64 位输出请用 printf("%lld")