#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<iostream>#include<string>#include<queue>#include<map>#define INF 0x3f3f3f3f3f3f#define max 500+10#define ll long long #define ms(a,b) memset(a,b,sizeof(a))usingnamespace std;constint maxn =111111;struct node{int son[26],size;}tree[2*maxn];int cnt;voidinsert(char*s){int n =strlen(s);int now =1,val;for(int i =0;i < n;i++){
val = s[i]-'a';if(tree[now].son[val]==0)//cteate node
tree[now].son[val]=++cnt;
now = tree[now].son[val];
tree[now].size++;}}intfind(char*s){int n =strlen(s);int now =1,val;for(int i =0;i<n;i++){
val = s[i]-'a';
now = tree[now].son[val];if(tree[now].size==1)return i+1;}return n;}char str[1111][33];int len,ans;intmain(){ms(tree,0);
cnt =1;
len =0;while(cin>>str[++len]&&str[len][0]!='0'){insert(str[len]);}for(int i =1;i<=len;i++){
ans =find(str[i]);
cout<<str[i]<<" ";
str[i][ans]='\0';
cout<<str[i]<<"\n";}int nnn;
cin>>nnn;return0;}