#include <iostream> #include <cstring> #include <cstdio> using namespace std;
struct trie_node{char letter; int sum;
BOOL F;
Trie_node *next[26];
Trie_node (char): letter {int i;for (i=0;i<=25;++i) next[i]=null; f=false; sum=0;}};
Trie_node *root;
Char s[100];
Char now[100];
int n,l;
void Insert (Trie_node *p,int i,int len) {Trie_node *temp;
if (p->next[(int) (s[i]) -97]==null) {temp=new trie_node (s[i]);
p->next[(int) (s[i]) -97]=temp;
p=p->next[(int) (S[i])-97];
} else p=p->next[(int) (S[i])-97];
if (i==len-1) {p->f=true; p->sum++;
Return
} insert (P,i+1,len);
} void Count (Trie_node *p) {int i;
if (p->f) {for (i=1;i<=l;++i) printf ("%c", Now[i]);
printf ("%c", P->letter);
printf ("%d\n", p->sum);
} for (I=0;i<=25;++i) {if (P->next[i]) {if (p!=root) {l++;
now[l]=p->letter; } count (P->next[i]);
if (p!=root) l--;
}}} int main () {int i,len;
Root=new Trie_node (");
scanf ("%d", &n);
for (i=1;i<=n;++i) {scanf ("%s", &s);
Len=strlen (s);
Insert (Root,0,len);
} l=0;
Count (Root); }