#include <iostream>
#include <map>
using namespace std;
int appearTimes(string x,string y){
int i=0;
int r=0;
while(i<x.length()){
if(x.find(y,i)==string::npos) break;
else {
i=x.find(y,i)+1;
r++;
}
}
return r;
}
map<string,int> times;
int main() {
string x;
while(cin>>x){
times.clear();
times["0"]=appearTimes(x, "0");
times["1"]=appearTimes(x, "1");
for(int i=0;i<x.length();i++){
for(int j=2;i+j<=x.length();j++){
string n=x.substr(i,j);
times[n]=appearTimes(x, n);
}
}
for(map<string,int>::iterator i=times.begin();i!=times.end();
i++){
if(i->second>1){
cout<<i->first<<' '<<i->second<<endl;
}
}
}
}