1 #include<stdio.h>
2 #include<string.h>
3 #include<algorithm>
4 #include<math.h>
5 using namespace std;
6 struct mu
7 {
8 int num;
9 struct mu *next[26];
10 };
11 struct mu *root;
12 struct mu *bulid();
13 int save(char a[]);
14 int main()
15 {
16 int n,max=0;
17 char anm[15],a[15];
18 root=bulid();
19 scanf("%d",&n);
20 getchar();
21 while(n--)
22 {
23 gets(a);
24 int temp=save(a);
25 if(temp>max)
26 {
27 max=temp;
28 strcpy(anm,a);
29 }
30 }
31 printf("%s %d\n",anm,max);
32 return 0;
33 }
34 struct mu *bulid()
35 {
36 struct mu *p;
37 p=(struct mu*)malloc(sizeof(struct mu));
38 for(int i=0;i<26;i++)
39 p->next[i]=NULL;
40 p->num=0;
41 return p;
42 }
43 int save(char a[])
44 {
45 struct mu *p;
46 p=root;
47 int len=strlen(a);
48 for(int i=0;i<len;i++)
49 {
50 if(p->next[a[i]-'a']!=NULL)
51 p=p->next[a[i]-'a'];
52 else
53 {
54 p->next[a[i]-'a']=bulid();
55 p=p->next[a[i]-'a'];
56 }
57 }
58 p->num++;
59 return p->num;
60 }