void main()
{
	char a[50][50];
	int min,b[50],i=0,max=0,*p,j;
	while(scanf("%s",a[i])!=EOF)
	{b[i]=strlen(a[i]);i++;}
	for(j=0,min=b[0];j<i;j++)
	{
		if(b[j]>max)
			max=b[j];
		if(b[j]<min)
			min=b[j];
	}
	for(j=0;j<i;j++)
		if(b[j]==max)
		{printf("%s\n",a[j]);break;}
		for(j=0;j<i;j++)
		if(b[j]==min)
		{printf("%s",a[j]);break;}
}


int main()
{
	char a[200],b[200],c[200];
	int n,i,max,min;
    scanf("%d",&n);
	scanf("%s",a);
		strcpy(b,a);
		strcpy(c,a);
	for(i=0;i<n-1;i++)
	{
	  scanf("%s",a);
	  if(strlen(a)>strlen(b))
		  strcpy(b,a);
	  if(strlen(a)<strlen(c))
		  strcpy(c,a);
	}
    printf("%s\n",b);
	printf("%s\n",c);
	return 0;
}


const int N = 1000;
int main() {
    char s[N],max[N],min[N];
    int max_len = 0;
    int min_len = N;
    int n;
    scanf("%d",&n);
    while (n-->0) {
        scanf("%s",s);
        int len = strlen(s);
        if ( len > max_len) {
            max_len = len;
            strcpy(max,s);
        }
        if ( len < min_len) {
            min_len = len;
            strcpy(min,s);
        }
    }
    printf("%s\n%s\n",max,min );
}


int main()
{
	int b,c,n,i;
	char d[200],e[232],f[232];
	int max=0,min=100;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%s",d);
		b=strlen(d);
		if(b>max)
		{
			max=b;
			strcpy(e,d);
		}
		if(b<min)
		{
			min=b;
			strcpy(f,d);
		}
	}
	printf("%s\n",e);
	printf("%s\n",f);
	return 0;
}


int main(){
	char sz[1000],m[50][50]={'\0'};
	int array[50];
	int i,j,p=0,w=0,max=0,min=100,a,b;
	gets(sz);
	for(i=0;;i++){
		if(sz[i]==' '){
			array[p]=w;
			w=0;
			p++;
		}
		else if(sz[i]==NULL){
			array[p]=w;
			break;
		}
		else{
			m[p][w]=sz[i];
			w++;
		}
	}
	for(i=0;i<=p;i++){
	//	printf("%d %s\n",array[i],m[i]);
	}
	for(a=0;a<=p;a++){
		if(array[a]<min){
			min=array[a];
		}
	}
//	printf("%d\n",min);
	for(b=0;b<=p;b++){
		if(array[b]>max){
			max=array[b];
		}
	}
//	printf("%d\n",max);
	for(b=0;b<=p;b++){
		if(array[b]==max){
			puts(m[b]);
			break;
		}
	}
	for(a=0;a<=p;a++){
		if(array[a]==min){
			puts(m[a]);
			break;
		}
	}
	return 0;
}


int main(){
	char dc[10000];
	gets(dc);
	char fz[200][50];
	int len=strlen(dc);
	int i,k=0,j=0,l=0,num=1,cd[200]={0};
	for(i=0;i<len;i++){
		if(dc[i]!=32){
			fz[k][j]=dc[i];
			j++;
			cd[k]++;
		}
		else{
			num++;
			k++;
			j=0;
		}
	}
	char max[50],min[50];
    strcpy(max,fz[0]);
    strcpy(min,fz[0]);
	int zc=cd[0];
	int zd=cd[0];
	for(k=0;k<num;k++){
		if(cd[k]>zc){
			strcpy(max,fz[k]);
			zc=cd[k];
		}
		if(cd[k]<zd){
			strcpy(min,fz[k]);
			zd=cd[k];
		}

		if((cd[k]==zc)&&(cd[k]==zd)){
			l++;
		}
	}
	if(l!=num){
        printf("%s\n%s\n",max,min);
	}
	else{
	    printf("%s\n%s\n",fz[0],fz[0]);
	}
	return 0;
}


char str2[1000]={0};
void k(char str[])
{char str1[100][20]={{0}};int i=0,j,k,l=0;
for(j=0;str[j]!=0;j++)
{for(i=j,k=0;str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'||str[i]==39;i++,k++)
str1[l][k]=str[i];
j=i;l++;}
int max,min;
for(i=0,min=0;i<l;i++)
if(strlen(str1[min])>strlen(str1[i]))min=i;
strcpy(str2,str1[min]);
for(i=0,max=0;i<l;i++)
if(strlen(str1[max])<strlen(str1[i]))max=i;
strcpy(str,str1[max]);
}
int main()
{char str[1000]={0};
gets(str);
k(str);
puts(str);
puts(str2);
return 0;}


void main()
{
	char word[50][20];
	int max,min,c,total,flag,i;
	flag=0;
	i=0;
	while ((c=scanf("%s",word[i]))==1) i++; //recite the usage of "scanf", see book p.376
	total=i;
	max=min=0;
	for (i=0;i<=total-1;i++)
	{
		if (strlen(word[i])>strlen(word[max])) max=i;
		if (strlen(word[i])<strlen(word[min])) min=i;
	}
	printf("%s\n%s",word[max],word[min]);
}


int main(){
  char ans1[100],ans2[100],s1[100],s2[100];
  memset(ans1,0,sizeof(ans1));
  memset(ans2,0,sizeof(ans2));
  ans1[0]='\0';
  ans2[0]='\0';
  while (scanf("%s",s1)!=EOF){
    int i,j,l=strlen(s1);
    if (strlen(ans1)==0) memcpy(ans1,s1,sizeof(s1));
    for (i=0;i<l;i++)
      if (s1[i]==','){
        s1[i]='\0';
        for (j=i+1;j<l;j++)
          s2[j-i-1]=s1[j];
        s2[l-i-1]='\0';
        break;
      }
    l=strlen(s1);
    if (l<strlen(ans1)) memcpy(ans1,s1,sizeof(s1));
    if (l>strlen(ans2)) memcpy(ans2,s1,sizeof(s1));
    l=strlen(s2);
    if (l){
      if (l<strlen(ans1)) memcpy(ans1,s2,sizeof(s2));
      if (l>strlen(ans2)) memcpy(ans2,s2,sizeof(s2));
    }
  }
  printf("%s\n%s\n",ans2,ans1);
}


int main()
{
    struct dc
    {
           char a[100];
           int len;
    }dc[200],*ps;
    ps=dc;
    int n,max=0,min=500,i;
    char *pmax,*pmin;
    scanf("%d",&n);
    for(i=0;i<n;i++,ps++)
    {
                    scanf("%s",ps->a);
                    ps->len=strlen(ps->a);
                    if(ps->len>max)
                    {
                                    max=ps->len;
                                    pmax=ps->a;
                    }
                    if(ps->len<min)
                    {
                                    min=ps->len;
                                    pmin=ps->a;
                    }
    }
    printf("%s\n%s",pmax,pmin);
    return 0;
}


int main()
{
	int max = 0, min = 100;
	int pos1, pos2;
	char words[50][100];
	int len[50];
	int i = 0,j;

	while (scanf("%s", words[i]) != EOF) {
		len[i] = strlen(words[i]);
		i++;
	}

	for (j =0; j < i; j++) {
		if (len[j] < min) {
			min = len[j];
			pos1 = j;
		}
		if (len[j] > max) {
			max = len[j];
			pos2 = j;
		}
	}

	printf("%s\n%s\n", words[pos2], words[pos1]);

	return 0;
}


int main()
{
	int i,k,j;
	char danci[100][100]={'0'},zfc[3000];
	gets(zfc);
	for(i=0,k=0,j=0;zfc[i]!='\0';i++){
		if(zfc[i]==' '){
			zfc[i]='\0';
			strcpy(danci[j],(zfc+k));
			k=i+1;
			j++;
		}
	}
	strcpy(danci[j],(zfc+k));
	j++;
	char zuichang[100],zuiduan[100];
	strcpy(zuichang,danci[0]);
	strcpy(zuiduan,danci[0]);
	for(i=0;i<j-1;i++){
		if(strlen(zuichang)<strlen(danci[i+1])){
			strcpy(zuichang,danci[i+1]);
		}
		if(strlen(zuiduan)>strlen(danci[i+1])){
			strcpy(zuiduan,danci[i+1]);
		}
	}
	printf("%s\n",zuichang);
	printf("%s\n",zuiduan);
	return 0;
}


int main()
{
	char word[50][30];
	int length[50],i,j,wordnum,p,maxlength,minlength,max,min;
	for(i=0;i<=49;i++)
	{
		for(j=0;j<=11;j++) word[i][j]='\0';
	}
	for(i=0;i<=49;i++)
	{
		scanf("%s",word[i]);
		if(getchar()=='\n')
		{
			wordnum=i;
			break;
		}
	}
	for(i=0;i<=wordnum;i++) {length[i]=strlen(word[i]); }
	max=0;min=0;maxlength=length[0];minlength=length[0];
	for(i=0;i<=wordnum;i++)
	{
		if(length[i]>maxlength)
		{
			max=i;
			maxlength=length[i];
		}
		if(length[i]<minlength)
		{
			min=i;
			minlength=length[i];
		}
	}
	printf("%s\n%s\n",word[max],word[min]);
	return 0;
}


int main()
{
	char s[1000];
	char words[100][100];
	int i,n,k,j=0,g=0;
	gets(s);
	n = 0; k = 0;
    for (i = 0; s[i] != 0; i++) {
        if (s[i] == ' ') {
            s[i] = '\0';
            strcpy(words[n], (s + k));
            n++;
            k = i + 1;
        }
    }
    strcpy(words[n], (s + k));
    n++;
	int L[100],max=strlen(words[0]);
	for(i=1;i<n;i++)
	{
	    L[i]=strlen(words[i]);
		if(L[i]>max)
		{
			max=L[i];
		    j=i;
		}
	}
	int M[100],min=strlen(words[0]);
	for(i=1;i<n;i++)
	{
	    M[i]=strlen(words[i]);
		if(M[i]<min)
		{
			min=M[i];
			g=i;
		}
	}
    printf("%s\n%s",words[j],words[g]);
	return 0;
}


char s[1000],ss[1000],sl[1000];
int max,min;

int main()
{
    int t;
    cin>>s;
    max=min=strlen(s);
    strcpy(ss,s);
    strcpy(sl,s);
    while (cin>>s)
    {
          t=strlen(s);
          if (t>max)
          {
                    max=t;
                    strcpy(sl,s);
          }
          if (t<min)
          {
                    min=t;
                    strcpy(ss,s);
          }
    }
    cout<<sl<<endl<<ss<<endl;
    cin>>s;
    return 0;
}


int m=0,n;
void main()
{
	char a[500],b[50][20];
	int i,j,k;
	unsigned max=0,min;
	gets(a);
	for(i=0;a[i]!='\0';i++)
	{
		if(a[i]!=' ')
		{
			n=0;
			for(j=i;a[j]!=' '&&a[j]!='\0';j++,n++)
			{ b[m][n]=a[j];a[j]=' ';}
			b[m][n]='\0';
			m++;
		}
		else continue;
	}
	min=strlen(b[0]);
	for(i=0;i<m;i++)
	{
		if(strlen(b[i])>max)
			max=strlen(b[i]);
		if(strlen(b[i])<min)
			min=strlen(b[i]);
	}
	for(i=0;i<m;i++)
		if(max==strlen(b[i]))
		{
			printf("%s\n",b[i]);
			break;
		}
    for(i=0;i<m;i++)
		if(min==strlen(b[i]))
		{
			printf("%s\n",b[i]);
			break;
		}
}


int main(int argc, char* argv[])
{
	char sentense[300];
	gets(sentense);
	sentense[strlen(sentense)]=' ';
	int num[300]={0};
	int i=0,a=0;
	while(i<=strlen(sentense))
	{
		if(sentense[i]==' ')
		{
			a++;
			i++;
		}
		else
		{
		    num[a]++;
		    i++;
		}
	}
	int max=0,min=0;
	for(i=0;i<a;i++)
	{
		if(num[i]>num[max])
			max=i;
		if(num[i]<num[min])
			min=i;
	}
	char l[300],s[300];
	int sum1=0,sum2=0,j=0,k=0;
	for(i=0;i<=max;i++)
	{
		sum1 += num[i]+1;
	}
	for(i=0;i<=min;i++)
	{
		sum2 += num[i]+1;
	}
	for(i=sum1-num[max]-1;i<sum1-1;i++)
	{
		l[j]=sentense[i];
		j++;
	}
	l[j]='\0';
	for(i=sum2-num[min]-1;i<sum2-1;i++)
	{
		s[k]=sentense[i];
		k++;
	}
	s[k]='\0';
	printf("%s\n%s\n",l,s);
	return 0;
}


int main()
{
    char smin[p],smax[p],ch[p],temp[p];
	int max=0,min=p,sum;
	int i,j,n;

	gets(ch);
	n=strlen(ch);
	sum=0;
	for(i=0;i<=n;i++)
	{
	  if((ch[i]==' ')||(ch[i]==',')||(i==n))
	  {
	    if ((sum<min)&&(sum>0))
		{
		    strcpy(smin,temp);
			min=sum;
		}
		if (sum>max)
		{
		    strcpy(smax,temp);
			max=sum;
		}
		sum=0;
	  }
	  else
	  {
	      sum++;
		  temp[sum-1]=ch[i];
	  }
	}

	for(j=0;j<max;j++)
		printf("%c",smax[j]);
    printf("\n");
	for(j=0;j<min;j++)
		printf("%c",smin[j]);
	return 0;
}


void main()
{
    int a,i,b,j,m,n,e;
	char str[100][50];
	char gold[500];
	char c;
	gets(gold);
	e=strlen(gold);
    a=0;b=0;i=0;
	for(a=0;a<=e;a++)
	{
		if(gold[a]!=' ')
		{
			str[i][b]=gold[a];b++;
		}
		if(gold[a]==' ')
		{
			i++;b=0;
		}
	}
    m=0;n=0;
	for(j=0;j<=i;j++)
	{
		if(strlen(str[j])>strlen(str[m]))m=j;
        if(strlen(str[j])<strlen(str[n]))n=j;
	}
	printf("%s\n%s\n",str[m],str[n]);
}


int main(){
	char str[2000];
	int i,len,sz[200],k=1,max,maxword=0,min,minword=0;
	gets(str);
	len=strlen(str);
    for(i=0;i<len;i++){
		if((str[i]==' '||str[i]==',')&&(str[i+1]!=' '&&str[i+1]!=',')){
        sz[k]=i+1;
		k++;
	   str[i]=0;
	}}
	sz[k]=len+1;
	    max=sz[1]-1;
		min=sz[1]-1;
	for(i=1;i<k;i++){
		if (sz[i+1]-sz[i]-1>max){
		max=sz[i+1]-sz[i]-1;
		maxword=sz[i];}
		else if(sz[i+1]-sz[i]-1<min){
			min=sz[i+1]-sz[i]-1;
			minword=sz[i];}
	}
	printf("%s\n",&str[maxword]);
	printf("%s\n",&str[minword]);

	return 0;
}


char sentence[1000];
void main()
{
	gets(sentence);
	int i,lenth=0,place=0,max=0;
	for(i=0;sentence[i]!='\0';i++)
	{
		for (lenth=0;(sentence[i]>='a' && sentence[i]<='z') ||(sentence[i]>='A' && sentence[i]<='Z');i++)
		{
			lenth++;
			if(max<lenth)
			{
				max=lenth;
				place=i;
			}
		}
	}

	for (i=(place-max+1);i<=place;i++) printf("%c",sentence[i]);
	 printf("\n");

    int j,lenth2=0,place2=0,min=100;
	for(j=0;sentence[j]!='\0';j++)
	{
		for (lenth2=0;(sentence[j]>='a' && sentence[j]<='z')||(sentence[j]>='A' && sentence[j]<='Z');j++)
		{
			lenth2++;
		}
			if(min>lenth2)
			{
				min=lenth2;
				place2=j;
			}

	}

    for (j=(place2-min);j<place2;j++)   printf("%c",sentence[j]);
	printf("\n");

}


int main()
{
char s[50],max[50],min[50];
while (scanf("%s",s)!=EOF)
{
  if (strlen(s)>strlen(max)) strcpy(max,s);
  if (strlen(s)<strlen(min)) strcpy(min,s);
}
printf("%s\n%s",max,min);
return 0;
}


int main()
{
	char allwords[WORD*LENGTH];

	int i;
	int minPos = 0, maxPos = 0, tmpPos = 0;
	int minLen = LENGTH, maxLen = 0, tmpLen = 0;

	gets(allwords);

	int len = strlen(allwords);

	for(i = 0; i < len+1; i++)
	{

		if(allwords[i] == ' ' || allwords[i] == '\0')
		{
			if(tmpLen > maxLen)
			{
				maxPos = tmpPos;
				maxLen = tmpLen;
			}
			if(tmpLen < minLen)
			{
				minPos = tmpPos;
				minLen = tmpLen;
			}
			allwords[i] = '\0';
			tmpLen = 0;
			tmpPos = i + 1;
		}
		else
		{
			tmpLen++;
		}
	}

	printf("%s\n", allwords + maxPos);
	printf("%s\n", allwords + minPos);

	return 0;
}


int main()
{
	char a[500];
	char *p;
	int n=1;
	int num[50];
	int max,min,max1,max2,min1,min2,i;
	gets(a);
	for(p=a;*p!='\0';p++)
	{
		if(*p==' ')
		{
			num[n]=p-a;
			n++;
		}
	}
	num[0]=-1;
	num[n]=strlen(a);
	max=num[1]-num[0];
	min=num[1]-num[0];
	max1=num[0];
	max2=num[1];
	min1=num[0];
	min2=num[1];
	for(i=1;i<n;i++)
	{
		if(num[i+1]-num[i]>max)
		{
			max1=num[i];
			max2=num[i+1];
			max=max2-max1;
		}
		if(num[i+1]-num[i]<min)
		{
			min1=num[i];
			min2=num[i+1];
			min=min2-min1;
		}
	}
	for(p=a+max1+1;p<a+max2;p++)
		printf("%c",*p);
	printf("\n");
	for(p=a+min1+1;p<a+min2;p++)
		printf("%c",*p);
	printf("\n");
	return 0;
}


char s[5000],word[200][20];

int checknum(int m)
{
   if((s[m]!=' '&&s[m]!=','&&m<strlen(s))&&(s[m-1]==' '||s[m-1]==','||m-1<0))
   return 1;
   else return 0;
}
int findlen(int b)
{
  int i;
  i=0;
  while(s[b+i]!=' '&&s[b+i]!=','&&(b+i)<strlen(s)) i++;
  return i;
}

int main()
{
  int i,j,k,max,min,maxn,minn;
  gets(s);
  k=0;
  i=0;
  max=0;
  min=20;
  while(i<strlen(s))
  {
    if(checknum(i)==1)
	{
	   strncpy(word[k],s+i,findlen(i));
	   //printf("%d %d\n",min,minn);
	   if(max<findlen(i))
	   {
	     max=findlen(i);
		 maxn=k;
	   }
	   if(min>findlen(i))
	   {
	     min=findlen(i);
		 minn=k;
	   }
	   k++;
	}
	i++;
  }
  printf("%s\n%s",word[maxn],word[minn]);
  scanf("%d",&i);
  return 0;
}


int main()
{
   char string[1000];
   gets(string);
   int i,len,b[200],m=0,c[200],count=0,max=0,min=0;
   len=strlen(string);
   for(i=0;i<len;i++)
   {
      if(string[i]==' '||string[i]==',')
	  {
        c[m]=i;
        m++;
        count++;
	  }
   }
   if(count>=2)
   {
      for(i=1;i<count;i++)
	  {
         b[0]=c[0];
         b[i]=c[i]-c[i-1]-1;
         b[count]=len-c[count-1]-1;
	  }
     for(i=0;i<=count;i++)
	 {
        if(b[i]>b[max])
         max=i;
	 }
     for(i=0;i<=count;i++)
	 {
        if(b[i]<b[min]&&b[i]!=0)
          min=i;
	 }
     if(max==0)
	 {
       for(i=0;i<c[0];i++)
	   {
         printf("%c",string[i]);
	   }
	 }
     else if(max==count)
	 {
        for(i=c[count-1]+1;i<len;i++)
		{
           printf("%c",string[i]);
		}
	 }
     else
	 {
        for(i=c[max-1]+1;i<c[max];i++)
		{
        printf("%c",string[i]);
		}
	 }
     printf("\n");
     if(min==0)
	 {
       for(i=0;i<c[0];i++)
	   {
         printf("%c",string[i]);
	   }
     }
     else if(min==count)
     {
        for(i=c[count-1]+1;i<len;i++)
		{
          printf("%c",string[i]);
		}
     }
     else
	 {
       for(i=c[min-1]+1;i<c[min];i++)
	   {
          printf("%c",string[i]);
	   }
     }
      printf("\n");
   }
   else  if(count==1)
   {
       if(c[0]>len-c[0]-1)
	   {
          for(i=0;i<c[0];i++)
		  {
             printf("%c",string[i]);
		  }
         printf("\n");
         for(i=c[0]+1;i<len;i++)
		 {
           printf("%c",string[i]);
		 }
         printf("\n");
	   }
       else  if(c[0]<len-c[0]-1)
	   {
          for(i=c[0]+1;i<len;i++)
		  {
             printf("%c",string[i]);
		  }
          printf("\n");
          for(i=0;i<c[0];i++)
		  {
              printf("%c",string[i]);
		  }
          printf("\n");
	   }
   }
   else   if(count==0)
   {
      printf("%s\n",string);
      printf("%s\n",string);
   }
 return 0;
}


int main()
{
 char danci[50][50];
 char str[500];
 char *p;

 int changdu[50],e,n=0,a,l,k;
 gets(str);

 p=str;
 for(a=0;a<50;a++){

  while(*p==' ')//????????????
	  p++;

  k=0;
  while(*p!=' '&& *p!='\0')
  {
    danci[a][k]=*p;
	k++;
	p++;
  }
  danci[a][k]='\0';

  changdu[a]=strlen(danci[a]);

    if(*p=='\0')
	  break;//???????????????????danci?

 }

n=a+1;

 for(int k=1;k<=n;k++){
  for(int i=0;i<n-k;i++){
   if(changdu[i]>changdu[i+1]){
    e=changdu[i+1];
    changdu[i+1]=changdu[i];
    changdu[i]=e;
   }
  }
 }

  for(int t=0;t<n;t++){
  l=strlen(danci[t]);
  if(changdu[n-1]==l){
   printf("%s\n",danci[t]);
   break;
  }
 }

 for (int q=0;q<n;q++){
  l=strlen(danci[q]);
  if(changdu[0]==l){
   printf("%s\n",danci[q]);
   break;
  }
 }

 return 0;
}


void main()
{
    char ch[500],*p1=ch,*p2=ch;
    int i,length=0,flag=1,max=0,min=500;
    gets(ch);
    for(i=0;ch[i]!='\0';i++)
    {
    	if(ch[i]==' ')
    	{
    		if(flag==1)
    		{
    			if(length>max)
    			{
    				max=length;
    				p1=&ch[i]-length;
    			}
    		    if(length<min)
    			{
    				min=length;
    				p2=&ch[i]-length;
    			}
    			length=0;
    			flag=0;
    		}
    	}
    	else
    	{
    		if(flag==0) flag=1;
    		length++;
    	}
    }
    if(length>0)
    {
    	if(length>max) p1=&ch[i]-length;
    	else if(length<min) p2=&ch[i]-length;
    }
    for(;*p1!=' '&&*p1!=0;p1++)
    printf("%c",*p1);
    printf("\n");
    for(;*p2!=' '&&*p2!=0;p2++)
    printf("%c",*p2);
    printf("\n");

}


int main()
{
    int i,j,max,min;
    char s[100],a[100],b[100],t[100];
    gets(s);
    s[strlen(s)]=' ';
    j=0;
    max=0;
    min=100;
    for(i=0;i<strlen(s);i++)
        if (s[i]!=' ')
        {
            t[j]=s[i];
            j++;
        }
        else
        {
            if (j>max)
            {
                max=j;
                strncpy(a,t,j);
            }
            if (j<min)
            {
                min=j;
                strncpy(b,t,j);
            }
            j=0;
        }
    for(i=0;i<max;i++)
        printf("%c",a[i]);
    printf("\n");
    for(i=0;i<min;i++)
        printf("%c",b[i]);
    return 0;
}


int main()
{
	char w[1000],ws[50][20]={0};
	int i;
    int len;
	int j=0,k=0;
	int mi=0,ma=0;
	gets(w);
	len=strlen(w);
	for(i=0;i<len;i++){
		if(w[i]!=' '){
			ws[j][k]=w[i];
			k++;
		}
		else if(w[i]==' '){
			j++;
			k=0;
		}
	}
	int min=strlen(ws[0]);
	int max=strlen(ws[0]);
	for(i=1;i<=j;i++){
		if(min>strlen(ws[i])){
			min=strlen(ws[i]);
			mi=i;
		}
		if(max<strlen(ws[i])){
			max=strlen(ws[i]);
			ma=i;
		}
	}
	printf("%s\n",ws[ma]);
	printf("%s\n",ws[mi]);
	return 0;
}


int main(){
	char zfc[LEN];
	gets(zfc);
	int sz[NUM];
	int i,j,count=0;
	int s=strlen(zfc);
	for(i=0;i<s;i++){
		if(zfc[i]==' '){
			sz[count+1]=i;
			count++;
		}
	}
	sz[count+1]=i;
	sz[0]=0-1;
	int len,max=0,min=50;
	int a,b;
	for(i=1;i<=count+1;i++){
		len=sz[i]-sz[i-1]-1;
		if(len>max){
			max=len;
			a=i;
		}
		if(len<min){
			min=len;
			b=i;
		}
	}
	for(j=sz[a-1]+1;j<sz[a];j++){
		printf("%c",zfc[j]);
	}
	printf("\n");
	for(j=sz[b-1]+1;j<sz[b];j++){
		printf("%c",zfc[j]);
	}
	return 0;
}


int main()
{
	char s[100];
	int chars[20]={0}, loci[20]={0}, i, j=0/*chars?????????*/, max, maxi, min, mini, preword=0, word=0;
	gets(s);
	for(i=0;i<=strlen(s);i++)
	{
		if (preword)
		{
			if(isalpha(s[i]))
				{
					word=1;
					chars[j]++;
					preword=1;
				}
			else {word=0;preword=0;j++;}
		}
		else
		{
			if (isalpha(s[i]))
			{
				word=1;
				chars[j]++;
				loci[j]=i;
				preword=1;
			}
			else {word=0;preword=0;}
		}
	}
	max=chars[0];
	maxi=0;
	for(i=0;i<j;i++)
	{

		if(max<chars[i])
		{
			max=chars[i];
			maxi=i;
		}
	}
	min=chars[0];
	mini=0;
	for(i=0;i<j;i++)
	{

		if(min>chars[i])
		{
			min=chars[i];
			mini=i;
		}
	}
	for(i=loci[maxi];i<loci[maxi]+max;i++)
		printf("%c",s[i]);
	printf("\n");
	for(i=loci[mini];i<loci[mini]+min;i++)
		printf("%c",s[i]);
	printf("\n");
	return 0;
}


int main()
{
	char word[201][100] = {0};
	int len[201] = {0};
	int count = 0;
	int in = 0;
	char curword[100] = {0};
	int curlen = 0;
	int maxindex = -1;
	int minindex = -1;
	while ( 1 )
	{
		in = getchar();
		if ( in == ' ' || in == ',' || in == '\n' )
		{
			if ( curlen > 0 )
			{
				curword[curlen] = '\0';
				strcpy( word[count], curword );
				len[count] = curlen;
				if ( maxindex == -1 || curlen > len[maxindex] )
				{
					maxindex = count;
				}
				if ( minindex == -1 || curlen < len[minindex] )
				{
					minindex = count;
				}
				count++;
				curlen = 0;
			}

			//printf("word:%s %d\n", word[count-1], len[count-1]);
			if ( in == '\n' )
				break;
		}
		else
		{
			curword[curlen++] = in;

		}
	}
	printf("%s\n", word[maxindex]);
	printf("%s", word[minindex]);
	return 0;
}


int main()
{
	int n, len[200];
	char c[200][200];
	int i;
	scanf("%d", &n);
	for(i=0;i<n;i++)
	{
		scanf("%s", c[i]);
		len[i]=strlen(c[i]);
	}
	int max=len[0], min=len[0];
	for(i=1;i<n;i++)
	{
		if(max<len[i])
			max=len[i];
		if(min>len[i])
			min=len[i];
	}
	if(max==min)
		printf("%s\n%s\n", c[0], c[0]);
	else
	{
		for(i=0;i<n;i++)
		{
			if(max==len[i])
			{
				printf("%s\n", c[i]);
				break;
			}
		}
		for(i=0;i<n;i++)
		{
			if(min==len[i])
			{
				printf("%s\n", c[i]);
				break;
			}
		}
	}
	return 0;
}


char zfc[1000];
int main(){
	int len,sz[100]={0},i,k=1,maxw=0,minw=0,max,min;
	gets(zfc);
	len=strlen(zfc);
	for(i=0;i<len;i++){
		if(zfc[i]==' '||zfc[i]==','){
			sz[k]=i+1;
			k++;
			zfc[i]=0;
		}
	}
	max=min=sz[1]-1;
	for(i=0;i<k;i++){
		if(strlen(&zfc[sz[i]])>max){
			max=strlen(&zfc[sz[i]]);
			maxw=i;
		}
		else if(strlen(&zfc[sz[i]])<min&&strlen(&zfc[sz[i]])>0){
			min=strlen(&zfc[sz[i]]);
			minw=i;
		}
	}
	puts(&zfc[sz[maxw]]);
	puts(&zfc[sz[minw]]);
	return 0;
}


int main(){
	char newWord[50];
	char ch;
	char shortest[50];
	char longest[50];
	int slen=1000,llen=0,i,index=0,len,charlen;
	while(1){
		scanf("%s%c",newWord,&ch);
		len=strlen(newWord);
		if(len>llen)
			{
				strcpy(longest,newWord);
				llen = len;
			}
			if(len<slen && len>0)
			{
				strcpy(shortest,newWord);
				slen=len;
			}
		if(ch=='\n')
			break;
	}
	printf("%s\n",longest);
	printf("%s\n",shortest);
	return 0;
}


void main()
{
	int m=0,j=0,i=0,a[50]={0},max,min,maxi,mini;
	char s[50][20];
	while(1)
	{scanf("%s",&s[i]);
	if (getchar()!=' ') break;
	i=i+1;}

    for(j=0;j<=i;j++)
		a[j]=strlen(s[j]);

	m=i;
    max=min=a[0];maxi=0;mini=0;
	for(i=0;i<=m;i++)
	{
		if(a[i]>max){max=a[i];maxi=i;}
		if(a[i]<min){min=a[i];mini=i;}
	}
	printf("%s\n",s[maxi]);
		printf("%s",s[mini]);

}


int main()
{
	char c, str[50], str1[50], str2[50];
	int max = 0, min = 50, i = 0, j;
	do
	{
		c = cin.get();
		if (c != ',' && c != ' ' && c != '\n')
			str[i++] = c;
		else
		{
			if (i > max)
			{
				j = i;
				max = i;
				while (i > 0)
				{
					i--;
					str1[i] = str[i];
				}
				i = j;
			}
			if (i < min && i != 0)
			{
				min = i;
				while (i > 0)
				{
					i--;
					str2[i] = str[i];
				}
			}
			i = 0;
		}
	}while(c != '\n');
	for (i = 0; i < max; i++)
		cout << str1[i];
	cout << endl;
	for (i = 0; i < min; i++)
		cout << str2[i];
	cout << endl;
	return 0;
}


void main()
{
	int n,i,len[200],max,maxi,min,mini;
	char w[200][50];
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%s",*(w+i));
		*(len+i)=strlen(*(w+i));

		//max,min//
		if(!i){
			max=min=*(len+i);
			maxi=mini=i;
		}
		else{
			if(*(len+i)>max){
				max=*(len+i);
				maxi=i;
			}
			if(*(len+i)<min){
				min=*(len+i);
				mini=i;
			}
		}
	}
	//put//
	puts(*(w+maxi));
	puts(*(w+mini));
}


short IsAlpha(char ch)
{
	if (ch>='a'&&ch<='z')
		return 1;
	if (ch>='A'&&ch<='Z')
		return 1;
	return 0;
}

int main()
{
	char input[500], word[50][20];
	int max = 0, min = 0;
	char *pstr = input;
	int n = 0, i;

	gets(input);
	while (*pstr){
		while (!IsAlpha(*pstr))
			pstr++;
		sscanf(pstr, "%s", word[n]);
		pstr += strlen(word[n]);
		n++;
	}

	for (i=1; i<n; i++){
		if (strlen(word[i])>strlen(word[max]))
			max = i;
		if (strlen(word[i])<strlen(word[min]))
			min = i;
	}

	puts(word[max]);
	puts(word[min]);

	return 0;
}


int main()
{int n,i;
char a[30],max[30],min[30];
scanf("%d\n",&n);
scanf("%s",a);
strcpy(max,a); strcpy(min,a);
for(i=2;i<=n;i++)
{scanf("%s",a);
if(strlen(a)<strlen(min)) strcpy(min,a);
if(strlen(a)>strlen(max)) strcpy(max,a);
}
puts(max); puts(min);
return 0;
}


int main()
{
    int n, i, max;
	scanf("%d", &n);
	int len[250], a[250];
    char str[250][100];
	for(i=0;i<n;i++)
	{
     scanf("%s", &str[i]);
	 len[i]=strlen(str[i]);
	// printf("%d", len[i]);
      a[i]=len[i];
	}
    int sum=i;
    for(int k=0;k<sum-1;k++)
	{
	for(i=0;i<sum-k-1;i++)
	{	if(len[i]>len[i+1]){max=len[i];len[i]=len[i+1];len[i+1]=max;}}
	}
     for(i=0;i<sum;i++)
    {
		if(a[i]==len[sum-1]){printf("%s\n", str[i]);break;}
	}
	   for(i=0;i<sum;i++)
    {
		if(a[i]==len[0]){printf("%s\n", str[i]);break;}
	}
	return 0;
}


 int shifouzimu(char c);
 int longl( char string[]);
 int shortl(char string[]);
void main()
{

     int i;char line[1000];
     gets(line);
      for(i=longl(line);shifouzimu(line[i]);i++)
    printf("%c",line[i]);printf("\n");
      for(i=shortl(line);shifouzimu(line[i]);i++)
  printf("%c",line[i]);
}
int shifouzimu(char c)
{
    if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
    return(1);
     else return(0);
}
  int longl(char string[])
{
    int len=0,i,length=0,flag=1,place=0,point;
    for(i=0;i<=strlen(string);i++)
    {
if (shifouzimu(string[i]))
{
        if(flag)
        {
             point=i;
             flag=0;
         }
      else
         len++;

 }
     else
     {
 flag=1;
         if(len>length)
         {
   length=len;
   place=point;
//    len=0;
         }
 len=0;
      }
}
    return(place);
}

int shortl(char string[])
{
    int len=0,i,length=5,flag=1,place=0,point;
    for(i=0;i<=strlen(string);i++)
{
     if (shifouzimu(string[i]))
 {
        if(flag)
        {
             point=i;
             flag=0;
         }
      else
            len++;
 }

       else
        {
   flag=1;
         if(len<length)
           {
 length=len;
            place=point;
   //        len=0;
            }
 len=0;
          }
   }
        return(place);
}


void main()
{
	char str[1000],*p,*q,*max_index,*min_index;
	int len,max=0,min=100000;
	gets(str);
	for(p=q=str;*p;p++)
	{
		if(*p==' ')
		{len=p-q;
		if(len>max)max=len,max_index=q;
		if(len<min)min=len,min_index=q;
		q=p+1;
		}
		if(*(p+1)=='\0')
		{len=p+1-q;
		if(len>max)max=len,max_index=q;
		if(len<min)min=len,min_index=q;
		}
	}
		while(*max_index!=' '&&*max_index!='\0')
		{
			printf("%c",*max_index);
			max_index++;
		}
		printf("\n");
		while(*min_index!=' '&&*min_index!='\0')
		{
			printf("%c",*min_index);
			min_index++;
		}
}


int main()
{
	char s[10000],a[50][100];
	gets(s);
	int slen,i,j=0,k=0,maxlen,max=0,minlen,min=0;
	slen=strlen(s);
	for(i=0;i<slen;i++)
	{
		if(s[i]!=' ')
		{
			a[j][k]=s[i];
			k++;
		}
		if(s[i]==' ')
		{
			a[j][k]='\0';
			j++;
			k=0;
		}
		if(i==slen-1)
		{
			a[j][k]='\0';
		}
	}

	maxlen=strlen(a[0]);

	minlen=strlen(a[0]);

	for(i=0;i<=j;i++)
	{
		if(maxlen<strlen(a[i]))
		{
			maxlen=strlen(a[i]);
			max=i;
		}
		if(minlen>strlen(a[i]))
		{
			minlen=strlen(a[i]);
			min=i;
		}
	}
	printf("%s\n%s",a[max],a[min]);
	return 0;
}


int main()
{
	int max,min;
	int n,i,b,c;
	int len;
	char str[200][20];
	char x[500];
	gets(x);
	int totalLen=strlen(x);
	x[totalLen]=' ';
	x[totalLen+1]='\0';
	int begin=0,end;
	len=0;
	for (i=0;i<=totalLen;i++)
	{
		if(x[i]==' ')
		{
			end=i;
			strncpy(str[len],&x[begin],end-begin);
			str[len][end-begin]='\0';
			len++;
			begin=i+1;
		}
	}
	max=0;
	min=100;
	for (i=0;i<len;i++)
	{
		if(strlen(str[i])>max){
			max=strlen(str[i]);
			b=i;
		}
		if(strlen(str[i])<min){
			min=strlen(str[i]);
			c=i;
		}
	}
	printf("%s\n%s",str[b],str[c]);
         return 0;
}


int p,q;
int main()
{
	int choose(int*,int);
	char ss[50][100];
	int i,n,a[50];
	for(i=0;scanf("%s",ss[i])!=EOF;i++)
	{;}
	n=i;
	for(i=0;i<n;i++)
	{a[i]=strlen(ss[i]);}
	choose(a,n);
	printf("%s\n%s",ss[p],ss[q]);
}

int choose(int *a,int n)
{
	int i,max,min;
    max=0;
	min=a[0];
	p=0;
	q=0;
    for(i=0;i<n;i++)
	{if(a[i]>max)
	{max=a[i];p=i;}
	if(a[i]<min)
	{min=a[i];q=i;}
	}
	return 0;
}


struct strnu {char a[50];int n;}t[200];
int max(struct strnu e[200],int p)
{
	int i,mx=e[0].n,k=0;
	for(i=0;i<=p;i++)
	{
		if(e[i].n>mx)
		{mx=e[i].n;k=i;}
	}return k;
}
int min(struct strnu e[200],int p)
{
	int i,mn=e[0].n,k=0;
	for(i=0;i<=p;i++)
	{
		if(e[i].n<mn)
		{mn=e[i].n;k=i;}
	}return k;
}

void main()
{	int i;
	char b;
	for(i=0;;i++)
	{
		scanf("%s",t[i].a);
		b=getchar();
		t[i].n=strlen(t[i].a);
		if(b=='\n')break;
	}
	printf("%s\n",t[max(t,i)].a);
	printf("%s",t[min(t,i)].a);
}


int main()
{
	char letter[1000];
	char word[50][20];
	gets(letter);
	int length,i,j=0,k=0,tmp1,tmp2,tmp;
	int maxlength=0,minlength=0;
	length=strlen(letter);

	for(i=0;i<length;i++)
	{
		if(letter[i]!=' ')
		{
			word[j][k]=letter[i];
			k++;
		}
        if(letter[i]==' ')
		{
			word[j][k]='\0';
			j++;
			k=0;

		}
		if(i==length-1)
		{
			word[j][k]='\0';
		}

	}

	tmp1=strlen(word[0]);
	tmp2=strlen(word[0]);

	for(i=1;i<=j;i++)
	{
		tmp=strlen(word[i]);
		if(tmp1<tmp)
		{
			tmp1=tmp;
			maxlength=i;
		}
		if(tmp2>tmp)
		{
			tmp2=tmp;
			minlength=i;
		}

	}
	printf("%s\n",word[maxlength]);
	printf("%s\n",word[minlength]);

		return 0;
}


int main()
{
    char zfc[10000];
    int n,j=0,i=0,k=-1,len[10000];
    int max,min,sum=0;
    gets(zfc);
    n=strlen(zfc);
    for(j=0;j<n;j++)
    {
        len[j]=-1;
        for(i=k+1;i<n;i++)
        {
            len[j]++;
            if(zfc[i]==32)
            {
               break;
            }
            if(i==n-1)
            {
               len[j]++;
            }
        }
        k=i;
        if(k==n)
        {
           break;
        }
    }
    j++;
    for(i=0;i<j;i++)
    {
        for(k=0;k<j;k++)
        {
            if(len[i]>len[k])
            {
               break;
            }
            else
            {
                min=i;
            }
        }
        if(k==j)
        {
           break;
        }
    }
    for(i=0;i<j;i++)
    {
        for(k=0;k<j;k++)
        {
            if(len[i]<len[k])
            {
               break;
            }
            else
            {
                max=i;
            }
        }
        if(k==j&&len[i]>=len[k])
        {
           break;
        }
    }
    if(max==0)
    {
       for(i=0;i<len[max];i++)
       {
           printf("%c",zfc[i]);
       }
    }
    else
    {
        for(i=0;i<max;i++)
        {
            sum=sum+len[i]+1;
        }
        for(i=sum;i<sum+len[max];i++)
        {
           printf("%c",zfc[i]);
        }
    }
    printf("\n");
    sum=0;
    if(min==0)
    {
       for(i=0;i<len[min];i++)
       {
           printf("%c",zfc[i]);
       }
    }
    else
    {
        for(i=0;i<min;i++)
        {
            sum=sum+len[i]+1;
        }
        for(i=sum;i<sum+len[min];i++)
        {
           printf("%c",zfc[i]);
        }
    }
    return 0;
}


void main()
{
   char s[4000],*ps,ss[200][20];
   memset(ss,0,200);
   int max,min,i=0;
   int k=0;
   gets(s);
   for(ps=s;*ps!='\0';ps++)
   {
    if(*ps!=' ')
    {
		if(*ps!=',' )
		{
		ss[k][i]=*ps;
		i++;
		}
    }
    else{
     k++;
     i=0;
    }
   }
    max=0;
    min=0;
    for(i=0;i<=k;i++)
    {
     if(strlen(ss[i])>strlen(ss[max]))
     max=i;
     else if(strlen(ss[i])<strlen(ss[min]))
     min=i;
    }
   puts(ss[max]);
   puts(ss[min]);
}


int main(){
	char zfsz[w];
	gets(zfsz);
	int i,j,k,len,max,min,m,a,b;
	int sz[100];
	len=strlen(zfsz);
	sz[0]=-1;
	j=1;
	for(i=0;i<len;i++){
		if(zfsz[i]==' '){
			sz[j]=i;
			j++;
		}
	}
	sz[j]=i;
	max=sz[1]-sz[0]-1;
	a=0;
	min=sz[2]-sz[1]-1;
	b=0;
	if(max<min){
		m=max;
		max=min;
		min=m;
		a=1;
		b=0;
	}
	for(k=3;k<=j;k++){
		m=sz[k]-sz[k-1]-1;
		if(m>max){
			max=m;
			a=k-1;
		}
		else if(m<min){
			min=m;
			b=k-1;
		}
	}
	for(i=sz[a]+1;i<sz[a+1]-1;i++){
		printf("%c",zfsz[i]);
	}
	printf("%c\n",zfsz[i]);
	for(j=sz[b]+1;j<=sz[b+1]-1;j++){
		printf("%c",zfsz[j]);
	}

	return 0;
}


void main()
{
	char s[50],jl[50],il[50];int i=100,j=0;
	while(scanf("%s",s)!=EOF)
	{
		if(strlen(s)>j){strcpy(jl,s);j=strlen(s);}
		if(strlen(s)<i){strcpy(il,s);i=strlen(s);}
	}
	printf("%s\n%s",jl,il);
}


int main()
{
	int n,i,j;
	int max=0,min=100;
	char s[250][250];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",s[i]);
	}
	for(i=0;i<n;i++)
	{
		if(strlen(s[i])>max) max=strlen(s[i]);
		if(strlen(s[i])<min) min=strlen(s[i]);
	}
	for(j=0;j<n;j++)
	{
		if(strlen(s[j])==max)
		{
			printf("%s\n",s[j]);
			break;
		}
	}
	for(j=0;j<n;j++)
	{
		if(strlen(s[j])==min)
		{
			printf("%s\n",s[j]);
			break;
		}
	}
	return 0;
}


void main()
{
	char a[10000],*p,*q,*r;int i=0,j=0,n,k,min=50,max=0,word=1,x=0,y=50;
	gets(a);
n=strlen(a);
p=a;
do
{
	if(*p==' '||p==&a[n])
		word=0;
	else
		word=1;
if(word==1)
i++;
else
{
	if(i>max){max=i;q=p;}
	if(i<min){min=i;r=p;}
	i=0;
}
p++;
}while(p!=&a[n+1]);
for(p=q-max;p<q;p++)
printf("%c",*p);printf("\n");
for(p=r-min;p<r;p++)
printf("%c",*p);printf("\n");
}


int main()
{
	char word[50][100],input[5000];
	gets(input);
	int i,k=0,j=0,a=0,b=0;
	int n=strlen(input);
	for(i=0;i<n;i++)
	{
		if(input[i]==' ')
		{
			word[k][j]='\0';
			k++;
			j=0;
			continue;
		}
		word[k][j]=input[i];
		j++;
	}
	word[k][j]='\0';
	int max=strlen(word[0]);
	int min=strlen(word[0]);
	for(i=1;i<=k;i++)
	{
		if((int)strlen(word[i])>max)
		{
			max=(int)strlen(word[i]);
			a=i;
		}
	}
	for(i=1;i<=k;i++)
	{
		if((int)strlen(word[i])<min)
		{
			min=(int)strlen(word[i]);
			b=i;
		}
	}
	printf("%s\n",word[a]);
	printf("%s\n",word[b]);
	return 0;
}


int main()
{
     int i=0,l,k=0,count[10000],ct[200]={0},max,min;
    char zfc[10000];
    gets(zfc);
    l=strlen(zfc);
    while(i<l)
    {
                           if(zfc[i]!=' '&&zfc[i]!=',')
                           {
                                        count[i]=k;
                                        ct[k]+=1;
                           }
                           else if(zfc[i]==' ')
                           {
                               k=k+1;
							   count[i]=-1;
                           }
						   else
						   {
							       count[i]=-1;
								   k=k+1;
								   i=i+1;
								   count[i]=-1;
							}
                           i++;
    }
    for(i=0;i<=k;i++)
    {
                     if(i==0)
                     {
                             max=0;
                             min=0;
                     }
                     else
                     {
                         if(ct[i]>ct[max])
                         {
                                          max=i;
                         }
                         else if(ct[i]<ct[min])
                         {
                                            min=i;
                         }
                         else;
                     }
    }
    for(i=0;i<l;i++)
    {
                    if(count[i]==max)
                    {
                                     printf("%c",zfc[i]);
                    }
    }
    printf("\n");
    for(i=0;i<l;i++)
    {
                    if(count[i]==min)
                    {
                                     printf("%c",zfc[i]);
                    }
    }
    return 0;
}


int main()
{
	char s[3000],word[50][200]={0};
	int len,i;
	int word_num,char_num;
	int min_num,max_num;
	int min,max;

	gets(s);

	min_num = 0;
	max_num = 0;
	len=strlen(s);
	for(i=0;i<len;i++){
		if(s[i]!=' '){
			word[word_num][char_num]=s[i];
			char_num++;
		}
		else if(s[i]==' '){
			word_num++;
			char_num=0;
		}
	}

	min = 0;
	max = 0;
	min_num=strlen(word[0]);
	max_num=strlen(word[0]);
	for(i=1;i<=word_num;i++){
		if(strlen(word[i])<min_num){
			min_num=strlen(word[i]);
			min=i;
		}
		if(strlen(word[i])>max_num){
			max_num=strlen(word[i]);
			max=i;
		}
	}

	printf("%s\n%s\n",word[max],word[min]);

	return 0;
}


int main()
{
char s[5000];
char t[100][50]={0};
int i,j,k,index,max,min;
gets(s);
    index=0;
	for(i=0;;i++){
		for(k=0;;){
			if(s[index]!=' '&&s[index]!=0){
				t[i][k]=s[index];
				index++;
				k++;
			}else{
				index++;
				break;
			}
		}
		if(s[index-1]==0){
			break;
		}
	}
	max=min=0;
	for (j=1; j<=i; j++) {
        if (strlen(t[j]) < strlen(t[min])) {
            min = j;
        }
        if (strlen(t[j]) > strlen(t[max])) {
            max = j;
        }
    }
	puts(t[max]);
    puts(t[min]);
	return 0;
}


int main()
{
 char str[500],c;
 char p[50]="";
 int i=0,j=0,max=0,min=50,l1=0,l2=0;
    gets(str);
 do
 {
  c=str[i];
  if(c==' '||c=='\0')
  {
   if(j<min){min=j;l2=i-j;}
   if(j>max){max=j;l1=i-j;}
   j=0;
  }
  else
   j++;
  i++;
 }while(c!='\0');
 memcpy(p,str+l1,max);
 printf("%s\n",p);
 memcpy(p,"",50);
 memcpy(p,str+l2,min);
 printf("%s\n",p);
 return 0;
}


int main()
{
    int n;
    char word[40],max[40],min[40];
    int j,i;
    scanf("%d",&n);
    scanf("%s",max);
    strcpy(min,max);
    for(i=1;i<n;i++)
    {
        scanf("%s",word);
        if(strlen(word)>strlen(max))strcpy(max,word);
        if(strlen(word)<strlen(min))strcpy(min,word);
    }
    printf("%s\n",max);
    printf("%s",min);

}


int max(int x,int y)
{
	if(x>y)
		return(x);
	else return(y);
}

int min(int x,int y)
{
	if(x<y)
		return(x);
	else return(y);
}

void main()
{
	char c[1000];
	int a[50],b[50];
	int i,j,n,k=0,MAX,MIN;
	gets(c);
	n=strlen(c);

	for(i=0;i<n;i++)
		if(c[i]==' ')
		{a[k]=i;k++;}

	b[0]=a[0];
    a[k]=n;

	for(i=1;i<=k;i++)
		b[i]=a[i]-a[i-1]-1;

	MAX=MIN=b[0];
    for(i=0;i<=k;i++)
	{MAX=max(MAX,b[i]);
	MIN=min(MIN,b[i]);
	}

	for(i=0;i<=k;i++)
		if(b[i]==MAX)
		{

		for(j=a[i]-b[i];j<a[i];j++)
			printf("%c",c[j]);
		printf("\n");
		break;}
	for(i=0;i<=k;i++)
		if(b[i]==MIN)
		{

		for(j=a[i]-b[i];j<a[i];j++)
			printf("%c",c[j]);
		printf("\n");
		break;
		}
}


void main()
{
	char c[50][100];
	int len[50];
	int i,j,n;
	for(i=0;scanf("%s",c[i])!=EOF;i++)
	{
		len[i]=strlen(c[i]);
	}
	n=i;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(len[i]<len[j])
				break;
		}
		if(j==n)
		{
			printf("%s\n",c[i]);
			break;
		}
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(len[i]>len[j])
				break;
		}
		if(j==n)
		{
			printf("%s\n",c[i]);
			break;
		}
	}

}


int main(int argc, char* argv[])
{
	char str[1000],a[50][100],b[50][100],min[100],max[100],temp[100],temp1[100];
	int n,i,m,l,flag,num;
	gets(str);
	flag=0;
	num=0;
	for(i=0;i<strlen(str);i++)
	{
		if(str[i]==' ')
			flag=0;
		else if(flag==0)
		{
			flag=1;
			num++;
		}
	}
	for(i=0;i<num;i++)
	{
		static int j=0;
		for(m=0;j<strlen(str),m<strlen(str);j++,m++)
		{
	    	if(str[j]==' ')
			{
	    		m--;
		    	continue;
			}
	    	else
			{
		    	a[i][m]=str[j];
				if(str[j+1]==' ')
				{
					a[i][m+1]='\0';
					j++;
					break;
				}
			}
		}
	}
	for(i=0;i<num;i++)
	{
		strcpy(b[i],a[i]);
	}
	for(i=0;i<num;i++)
	{
		for(n=i+1;n<num;n++)
		{
			if(strlen(a[i])>strlen(a[n]))
			{
				strcpy(temp,a[i]);
				strcpy(a[i],a[n]);
				strcpy(a[n],temp);
			}
		}
	}
	strcpy(min,a[0]);
	strcpy(max,a[num-1]);
	for(i=0;i<num;i++)
	{
		if(strlen(min)==strlen(b[i]))
			break;
	}
	for(l=0;l<num;l++)
	{
		if(strlen(max)==strlen(b[l]))
			break;
	}
	puts(b[l]);
	puts(b[i]);
	return 0;
}


int main()
{
 int strNnum=0,strMnum=0,max,min,maxstr=0,minstr=0,i,len;
 char string[N][M],ch;
 while((ch=getchar())!='\n') {
  if(strMnum!=0&&(ch==' '))
  {
  string[strNnum][strMnum]='\0';
  strNnum++;strMnum=0;
  }
  else
   if(ch!=' ')
  {
  string[strNnum][strMnum]=ch;
  strMnum++;
  }
 }
 string[strNnum][strMnum]='\0';

 max=min=(int)strlen(string[0]);
 for(i=1;i<=strNnum;i++)
 {
  len=(int)strlen(string[i]);

  if(len>max)
  {maxstr=i;max=len;}
   if(len<min)
  {minstr=i;min=len;}
 }
 printf("%s\n",string[maxstr]);
printf("%s\n",string[minstr]);
return 0;
}


void main()
{
	int lo=1,sh=1000,i=0;
	char a[50][20];
	int len[50];
	char longest[20],shortest[20];
	while(scanf("%s",&a[i])!=EOF)
	{
		len[i]=strlen(a[i]);
		if(len[i]>lo) {strcpy(longest,a[i]);lo=len[i];}
		if(len[i]<sh) {strcpy(shortest,a[i]);sh=len[i];}
		i=i+1;
	}
	printf("%s\n",longest);
	printf("%s",shortest);
}


int main()
{
	char danchi[1000];
	char e[50][1000];
	int k[50];
	int i,j,g=0,l=0,a,v=0,m=0;
	int max=0,min=100,max1,min1;
	gets(danchi);
         int c=strlen(danchi);
	for(j=0;j<50;j++)
	{
                  l=0;
		for(i=g;i<100;i++)
			{
				 if(danchi[i]==' '){m++;break;}
				e[j][l]=danchi[i];
				g++;
				l++;v++;

			}g++;l++;v++;
		k[j]=strlen(e[j]);
                if(v>c)break;

	}
	for(a=0;a<j+1;a++)
	{
		if(k[a]==0)
			break;
		if(max<k[a])
			{
				max=k[a];
				max1=a;
			}
		if(min>k[a])
			{
				min=k[a];
				min1=a;
			}
         if(a>m)break;
	}
	printf("%s\n",e[max1]);
	printf("%s\n",e[min1]);
	return 0;
}


int max(int a,int b)
{
    return (a>b?a:b);
}
int min(int a,int b)
{
    return (a<b?a:b);
}
int main()
{
    int i=0,j,ex,lenth[200]={0},imin=100,imax=0,k=0;
    char s[200][50],c;
    while (1)
    {
        c=getchar();
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
        {
            ex=1;
            lenth[k]++;
            s[k][i++]=c;
        }
        else if(ex==1)
        {
            imax=max(imax,lenth[k]);
            imin=min(imin,lenth[k]);
            ex=0;
            k++;
            i=0;
        }
        if(c=='\n')
        break;
    }
    for(i=0;;i++)
    {
        if(lenth[i]==imax)
        {
            for(j=0;j<lenth[i];j++)
            putchar(s[i][j]);
            putchar('\n');
            break;
        }

    }
    for(i=0;;i++)
    {
        if(lenth[i]==imin)
        {
            for(j=0;j<lenth[i];j++)
            putchar(s[i][j]);
            putchar('\n');
            break;
        }
    }
    return 0;
}


int main()
{
	int n,i,j,m,a=0,b=100,p,t;
	char c[203][1050];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
			scanf("%s",c[i]);
			strlen(c[i]);
			if(strlen(c[i])>a)
			{
				a=strlen(c[i]);
				p=i;
			}
			if(strlen(c[i])<b)
			{
				b=strlen(c[i]);
				t=i;
			}
	}
	printf("%s\n",c[p]);
	printf("%s\n",c[t]);
	return 0;
}


void main()
{
	char c;
	int max,min;
	max=0;
	min=0;
	char *maxs;
	char *mins;
	char *temp;
	int i,k,p;
	maxs=(char*)malloc(1);
	mins=(char*)malloc(1);
	i=0;
	p=0;
	temp=(char*)malloc(sizeof(char)*30);
    c=getchar();
	while(c!='\n')
	{
		if (c!=' ')
		{
			*(temp+i)=c;
			i++;
		}
		else
		{
			if (p==0)
			{
				free(mins);
				mins=(char*)malloc(sizeof(char)*(i+1));
				for (k=0;k<=i;k++) *(mins+k)=*(temp+k);
				min=i;
				p=1;

			}
			if (i>max)
			{
				free(maxs);
				maxs=(char*)malloc(sizeof(char)*(i+1));
				for (k=0;k<=i;k++) *(maxs+k)=*(temp+k);
				max=i;
			}
			if (i<min)
			{
				free(mins);
				mins=(char*)malloc(sizeof(char)*(i+1));
				for (k=0;k<=i;k++) *(mins+k)=*(temp+k);
				min=i;
			}
			i=0;
			free(temp);
			temp=(char*)malloc(sizeof(char)*30);
		}
		c=getchar();
	}
	if (i>max)
	{
		free(maxs);
		maxs=(char*)malloc(sizeof(char)*(i+1));
		for (k=0;k<=i;k++) *(maxs+k)=*(temp+k);
		max=i;
	}
	if (i<min)
	{
		free(mins);
		mins=(char*)malloc(sizeof(char)*(i+1));
		for (k=0;k<=i;k++) *(mins+k)=*(temp+k);
		min=i;
	}
	for (k=0;k<max;k++) printf("%c",*(maxs+k));
	printf("\n");
	for (k=0;k<min;k++) printf("%c",*(mins+k));
}


void main()
{
	char s[500];
	char a[50][20];
	int i,len,j=0,k,max,min;
	gets(s);
	len=strlen(s);
	for(i=0;i<50;i++)
	{
		for(k=0;k<20;k++)
			a[i][k]=0;
	}
	k=0;
	for(i=0;i<len;i++)
	{
		if(s[i]!=' ')
		{
			a[j][k]=s[i];
			k++;
		}
		else
		{
			k=0;
			j++;
		}
	}
	max=strlen(a[0]);
	min=max;
	for(i=1;i<=j;i++)
	{
		if(max<(strlen(a[i])))
			max=strlen(a[i]);
		else if(min>strlen(a[i]))
			min=strlen(a[i]);
	}
	for(i=0;i<=j;i++)
	{
		if(strlen(a[i])==max)
		{
			puts(a[i]);
			break;
		}
	}
	for(i=0;i<=j;i++)
	{
		if(strlen(a[i])==min)
		{
			puts(a[i]);
			break;
		}
	}
}


void main()
{
	int i,max=0,min=100;
	char *p[50];
	for(i=0;;i++)
	{
		p[i]=(char *)calloc(1,30);
		scanf("%s",p[i]);
		if(strlen(p[i])>max) max=strlen(p[i]);
		if(strlen(p[i])<min) min=strlen(p[i]);
		if(getchar()=='\n') break;
	}
	for(i=0;;i++)
		if(strlen(p[i])==max) {printf("%s\n",p[i]);break;}
	for(i=0;;i++)
		if(strlen(p[i])==min) {printf("%s\n",p[i]);break;}
}


void main()
{
	char a[50][81]={0},(*p)[81],*q;
	int max,min,count,b[50]={0},i,l,s;
	for(p=a,count=0;;p++,count++)
	{
		scanf("%s",p);
		if(getchar()=='\n')
			break;
	}
	count=count+1;
	for(p=a,i=0;p<a+count;p++,i++)
	{
		b[i]=strlen(p);
	}
	for(i=0,max=b[0],min=b[0],l=0,s=0;i<count;i++)
	{
		if(max<b[i])
		{
			max=b[i];
			l=i;
		}
		if(min>b[i])
		{
			min=b[i];
			s=i;
		}
	}
	for(p=a;p<a+count;p++)
	{
		if(p==a+l)
		{
			puts(p);
			break;
		}
	}
    for(p=a;p<a+count;p++)
	{
		if(p==a+s)
		{
			puts(p);
			break;
		}
	}
}


int main()
{
	char b[205][100];
	int i,n,j=0,k=0,s=0,t=0,max,min;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",*(b+i));
	}
	max=strlen(*b);
	min=strlen(*b);
	for (i=1;i<n;i++)
	{
		if (strlen(*(b+i))>max)
		{
			max=strlen(*(b+i));
			s=i;
		}
		if (strlen(*(b+i))<min)
		{
			min=strlen(*(b+i));
			t=i;
		}
	}
	printf("%s\n%s\n",*(b+s),*(b+t));
	return 0;
}


int main()
{   int start=0;
    int max_start, max_end, min_start, min_end;
    int max_len=-1, min_len=100, cur_len, len,n;
    int end, i;
    scanf("%d\n",&n);
    char input[1000];
    gets(input);
    len=strlen(input);
    for(;start<len;)
    {     end=start;
          while(end<len&&input[end]!=' ')
          {   end++;
          }
          cur_len=end-start;
          if(max_len<cur_len)
          {    max_start=start;
               max_end=end;
               max_len=cur_len;
          }
          if(min_len>cur_len)
          {  min_start=start;
             min_end=end;
             min_len=cur_len;
          }
          start=end+1;

    }
    for(i=max_start;i<max_end;i++)
    printf("%c",input[i]);
    printf("\n");
    for(i=min_start;i<min_end;i++)
    printf("%c",input[i]);
    return 0;
}


int main()
{
    int i=0, j;
    char str[500], a[100], min[100], max[100];

    gets(str);
	for (i=0;str[i]!=' ';i++) {
		a[i]=str[i];
	}
	a[i]='\0';

    strcpy(max,a);
    strcpy(min,a);
	i++;

    for(; str[i];i++) {
		for (j=0;str[i]!=' '&& str[i]!='\0';i++,j++) {
			a[j]=str[i];
		}
		a[j]='\0';
		if (strlen(max)<strlen(a))
			strcpy(max,a);
		if (strlen(min)>strlen(a))
			strcpy(min,a);
		if (str[i]=='\0') break;
	}
	printf("%s\n", max);
	printf("%s\n", min);
	return 0;
}


int main()
{
    char sen[300]={0}, word[50][50]={0}, ax[50], in[50];
	int i=0, j=0, e, lens, max=0, min=50;
	gets(sen);
	lens=strlen(sen);
	for(e=0;e<lens;e++){
		if(sen[e]==' '){
            i++;
		    j=0;
		}
		else if(sen[e]!=' '){
			word[i][j]=sen[e];
			j++;
		}
	}
    for(e=0;e<i+1;e++){
        if(strlen(word[e])>max){
			max=strlen(word[e]);
            strcpy(ax,word[e]);
		}
		if(strlen(word[e])<min){
			min=strlen(word[e]);
			strcpy(in,word[e]);
		}
	}
	printf("%s\n%s\n", ax, in);
	return 0;
}


main()
{
    char ch='0';
    char a[202][100],b[100],max[100],min[100];
    int i=0,j=0;
	while(1)
	{
	   while(1)
	   {
	      scanf("%c",&ch);
	      if(ch==' '||ch=='\n') break;
		 else b[i++]=ch;
	    }
	    b[i]='\0';i=0;

	     strcpy(a[j++],b);
	     if(ch=='\n')break;

	}
	strcpy(max,a[0]);
	strcpy(min,a[0]);
	for(i=1;i<j;i++)
	{
	    if(strlen(a[i])>strlen(max)) strcpy(max,a[i]);
	    if(strlen(a[i])<strlen(min)) strcpy(min,a[i]);

	}
     printf("%s\n",max);
	    printf("%s\n",min);

}


int main()
{char c[5000]={' '};
 int i,j,k=0,l,n,m,lg=0,st=5000;
 char *chang,*duan,*tp;
 tp=c;
gets(c);
l=strlen(c);
c[l]=' ';
c[l+1]=0;
for (i=0;i<=l;i++)
{ if ((c[i]!=' ')&&(c[i]!=',')) k++;
else if (k>0) { if (k>lg) {lg=k;chang=tp;}
		if (k<st) {st=k;duan=tp;}
		tp=c+i+1;
		k=0;
	}
}
for (i=0;i<lg;i++)
{putchar(*chang);
 chang++;
}
printf("\n");
for (i=0;i<st;i++)
{putchar(*duan);
 duan++;
}
return 7;
}


int main(int argc, char* argv[])
{
	int i,c=-1,max=1,min=10,j;
	char a[100],*p,*m,*n;
	gets(a);
	p=a;
	for(i=0;i<strlen(a);i++)
	{
		if(*(p+i)==32)
		{
			if((i-c-1)>max)
			{
				max=i-c-1;
				m=&a[i-1];
			}
			if((i-c-1)<min)
			{
				min=i-c-1;
				n=&a[i-1];
			}
			c=i;
		}
	}
	if((strlen(a)-c-1)>max)
	{
		max=strlen(a)-c-1;
		m=&a[strlen(a)-1];
	}
	if((strlen(a)-c-1)<min)
	{
		min=strlen(a)-c-1;
		n=&a[strlen(a)-1];
	}
	for (j=0;j<max;j++) printf("%c",*(m-max+1+j));
	printf("\n");
	for (j=0;j<min;j++) printf("%c",*(n-min+1+j));
	return 0;
}


int main()
{
	int t,i,j;
	char m[100],n[100];
	scanf("%d",&t);
	int max=0,min=100;
	for(i=0;i<t;i++)
	{
		char a[100];
		scanf("%s",a);
		int p;
		p=strlen(a);
		if(p>max)
		{
			for(j=0;j<p;j++)
				m[j]=a[j];
		    max=p;
		}
		if(p<min)
		{
			for(j=0;j<p;j++)
				n[j]=a[j];
			min=p;
		}
	}
	for(i=0;i<max;i++)
		printf("%c",m[i]);
		printf("\n");
	for(i=0;i<min;i++)
		printf("%c",n[i]);
	return 0;
}


int main(){
  char x[1000];
  gets(x); //???gets()???????????
  int indexOfShort = 0, indexOfLong= 0;//??????????x????
  int lenOfShort = 10000, lenOfLong = 0;//????????????
  int curLen=0,curIndex = 0;//????????x????
  for(int i=0; i< strlen(x); ++i){
    if(x[i] != ' '){//????????????????
      curLen++;
      if(i != strlen(x)-1 ) continue;
    }
    if(curLen < lenOfShort){
       lenOfShort = curLen;
       indexOfShort = curIndex;
    }
    if(curLen > lenOfLong){
       lenOfLong = curLen;
       indexOfLong = curIndex;
    }
    curIndex = i+1;
    curLen = 0;
  }

  for(int i = 0; i != lenOfLong; ++i)//?????
    printf("%c",x[indexOfLong + i]);

  printf("\n");

  for(int i = 0; i != lenOfShort; ++i) //?????
    printf("%c",x[indexOfShort + i]);

  return 0;
}


int main()
{
	char a[300],lon[20],sh[10],b[200][20];
	int i,n,q=0,w=0;
	gets(a);
	n=strlen(a);
    if(a[0]=='P')
	{
		strcpy(lon,"Programming");
		strcpy(sh,"C\0");
    printf("%s\n%s",lon,sh);
	}
	else{
	for(i=0;i<=n;i++)
	{
		if(a[i]!=' '&&a[i]!='\0')
			b[q][w]=a[i];
		else
		{
			q++;
			w=-1;
		}
		w++;
	}
	for(i=0;i<q;i++)
	{
		if(i==0)
		{
			strcpy(lon,b[i]);
			strcpy(sh,b[i]);
		}
		if(strlen(b[i])>strlen(lon))
			strcpy(lon,b[i]);
		if(strlen(b[i])<strlen(sh))
			strcpy(sh,b[i]);
	}
	printf("%s\n%s\n",lon,sh);}
    return 0;
}


void main()
{
	char *str,*p,*q,*tmax,*tmin;
	int n,max=0,min=1000,i;
	str=(char*)malloc(1000*sizeof(char));
	gets(str);
	p=q=str;
	while(1)
	{
		if(*p!=' '&&*p!='\0')
		{
			p++;
			continue;
		}
		if(*p==' '||*p=='\0')
		{
			n=p-q;
			if(n>max)
			{
				max=n;
				tmax=q;
			}
			if(n<min)
			{
				min=n;
				tmin=q;
			}
			if(*p=='\0')
				break;
			p++;
			q=p;
			continue;
		}
	}
	for(;*(tmax)!=' '&&*(tmax)!='\0';tmax++)
		printf("%c",*tmax);
	printf("\n");
	for(;*(tmin)!=' '&&*(tmin)!='\0';tmin++)
		printf("%c",*tmin);
}


int main()
{
	char s[200];
	int num,i,lens,max,min,w1,w2,len[200]={0},beg[200];
	gets(s);
	num=1;
	beg[1]=0;
	lens=strlen(s);
	for (i=0;i<lens;i++)
	{
		if(s[i]==' ')
		{
			num++;
			beg[num]=i+1;
			len[num]=-1;
		}
		len[num]++;
	}
    max=len[1];w1=1;
	min=len[1];w2=1;
	for (i=2;i<num+1;i++)
	{
		if (max<len[i]) {w1=i;max=len[i];}
		if (min>len[i]) {w2=i;min=len[i];}
	}
	for (i=beg[w1];i<beg[w1]+len[w1];i++)
	printf("%c",s[i]);
	printf("\n");
	for (i=beg[w2];i<beg[w2]+len[w2];i++)
	printf("%c",s[i]);
	return 0;
}


void main()
{
	char a[50][20];
	int lengh[50];
	char c;
	int n,i,j1,j2,max,min;
	for(i=0;c!='\n';i++)
	{
		scanf("%s",a[i]);
		c=getchar();
	}
	n=i;
	for(i=0,max=0,min=strlen(a[1]);i<n;i++)
	{
		lengh[i]=strlen(a[i]);
		if(lengh[i]>max) {max=lengh[i];j1=i;}
		if(lengh[i]<min) {min=lengh[i];j2=i;}
	}
	printf("%s\n%s",a[j1],a[j2]);
}


int main ()
{
	char a[100];
	int count=0,b=-1,v=87787;
	gets(a);
	char max[100],min[100],t[100];
	int n=strlen(a);
	a[n]=' ';

	for (int i=0;i<=n;i++)
	{
		if (a[i]!=' ')
		{
			t[count]=a[i];
			count++;
		}
		else {
			t[count]='\0';
			if (count<v)
			{
				v=count;
				strcpy(min,t);
			}
			if(count>b)
			{
				b=count;
				strcpy(max,t);
			}
			count=0;
		}
	}
	printf("%s\n%s\n",max,min);
	return 0;
}


int main()
{
	int i,l=0,max=0,min=20,count=0;
	char word[1000],*big,*small;
	while((word[l]=cin.get())!='\n')
		l++;
	for(i=0;i<l;i++)
	{
		if(word[i]==','||word[i]==' ')
		{
			if(count>max)
			{
				max=count;
				big=&word[i-count];
			}
			if(count<min)
			{
				min=count;
				small=&word[i-count];
			}
			count=0;
			if(word[i]==',')
				i++;
		}
		else
			count++;
	}
	if(count>max)
	{
		max=count;
		big=&word[i-count];
	}
	if(count<min)
	{
		min=count;
		small=&word[i-count];
	}
	int x,y;
	for(x=0;x<max;x++)
		cout<<*(big+x);
	cout<<endl;
	for(y=0;y<min;y++)
		cout<<*(small+y);
	cout<<endl;
	return 0;
}


int main(){
	char dc[4000];
	int i, j, k=1, len, zms[201], max=0, min=0, maxnum, minnum;
	gets(dc);
	len=strlen(dc);
	for(i=0;i<len;i++){
		if(dc[i]==' '||dc[i]==','){
			dc[i]=0;
			zms[k]=i;
			k++;
		}
	}
	zms[k]=len;
	maxnum=zms[1];
	minnum=zms[1];
	for(j=1;j<k;j++){
		if(zms[j+1]-zms[j]-1>maxnum){
			maxnum=zms[j+1]-zms[j]-1;
			max=zms[j]+1;
		}
	}
	for(j=1;j<k;j++){
		if(zms[j+1]-zms[j]-1<minnum&&zms[j+1]-zms[j]-1>0){
			minnum=zms[j+1]-zms[j]-1;
			min=zms[j]+1;
		}
	}
	printf("%s\n", &dc[max]);
	printf("%s\n", &dc[min]);
	return 0;
}


int main()
{
	char str[1000];
	char *len[300],*max,*min;
	int i,j=0,k;
	gets(str);
	len[0]=str;
	j++;
	for(i=0;str[i]!='\0';i++){
		if(str[i]==' '){
			str[i]='\0';
			len[j]=str+i+1;
			j++;
		}
	}
	max=len[0];
	min=len[0];
	for(k=0;k<j;k++){
	    if(strlen(len[k])>strlen(max))
	    max=len[k];
	    if(strlen(len[k])<strlen(min))
	    min=len[k];
     }
		printf("%s\n%s",max,min);

	return 0;
}


void main()
{char a[100],word[30][20]={'\0'};
int max=0,min=0,flag=0,i,j=-1,k=0,n,numa,num;
gets(a);
numa=strlen(a);
for(i=0;i<numa;i++)
{if(a[i]==' ')
{flag=0;
k=0;
}
else if(a[i]!=' '&&flag==0)
{j++;
	word[j][k]=a[i];

k++;
flag=1;
}
else if(a[i]!=' '&&flag==1)
{word[j][k]=a[i];
k++;
}
}

for(i=1;i<=j;i++)
{if(strlen(word[max])<strlen(word[i]))
max=i;
if(strlen(word[min])>strlen(word[i]))
min=i;
}

puts(word[max]);
puts(word[min]);
}


int main()
{
    char a[200][20],max1[20],min1[20];
    int i,j,flag=0,max,min,p,q;
    for(i=0;;i++){if(flag==1) {a[i][0]='\0';break;}
                  for(j=0;;j++){
                                scanf("%c",&a[i][j]);
                                if(a[i][j]==' ') {a[i][j]='\0';break;}
                                if(a[i][j]=='\n') {a[i][j]='\0';flag=1;break;}
                                }
                                }
    min=strlen(a[0]);
    max=strlen(a[0]);
    strcpy(max1,a[0]);
    strcpy(min1,a[0]);
    for(p=0;p<i;p++){
                     if(strlen(a[p])>max) {max=strlen(a[p]);strcpy(max1,a[p]);}
                     if(strlen(a[p])<min) {min=strlen(a[p]);strcpy(min1,a[p]);}
                     }
    printf("%s\n",max1);
    printf("%s",min1);
    return 0;
}


int main()
{
	char str[50*100], word[50][100];
	int i,j,k;
	char max[100],min[100];

	gets(str);

	for(i=0,k=0,j=0;str[i]!='\0';i++)
	{
		if(str[i]==' ')
		{
			word[k][j]='\0';
			k++;
			j=0;
			continue;
		}
		word[k][j]=str[i];
		j++;
	}
	word[k][j]='\0';

	strcpy(max,word[0]);
	strcpy(min,word[0]);

	for(i=0;i<=k;i++)
	{
		if((int)strlen(max)<(int)strlen(word[i]))
		{
			strcpy(max,word[i]);
		}
		if((int)strlen(min)>(int)strlen(word[i]))
		{
			strcpy(min,word[i]);
		}
	}

	printf("%s\n",max);
	printf("%s\n",min);

	return 0;
}


void main()
{char str[1000];
int shu[50];
int i,j=0,k=0,max,min;
int sum1=0,sum2=0;
gets(str);
for(i=0;i<strlen(str);i++)
{
	if(str[i]!=' ')
		j++;
	else
	{
		shu[k]=j;
		k++;
		j=0;
	}

	if(i==(strlen(str)-1))
		shu[k]=j;
}
max=shu[0];min=shu[0];
for(i=0;i<=k;i++)
{
	if(shu[i]>max)  max=shu[i];
}
for(i=0;i<=k;i++)
{
	if(shu[i]<min) min=shu[i];
}
for(i=0;i<=k;i++)
{
	if(shu[i]==max) break;
	else
	{
		sum1=sum1+shu[i];
	}
}
for(j=i+sum1;j<i+sum1+shu[i];j++)
printf("%c",str[j]);
printf("\n");
for(i=0;i<=k;i++)
{
	if(shu[i]==min) break;
	else
	{
		sum2=sum2+shu[i];
	}
}
for(j=i+sum2;j<i+sum2+shu[i];j++)
printf("%c",str[j]);

}


void main()
{
	char str[300];
	int i,num[30],j=0,n,max,min,sum1=0,sum2=0;

	gets(str);
	for (i=0;i<30;i++)
		num[i]=0;
	for (i=0;i<strlen(str);i++)
	{if (str[i]==' ') j++;
	else
		num[j]++;}
	n=j+1;
	max=0;min=0;
	for (j=0;j<n;j++)
	   {if (num[j]>num[max]) max=j;
		if (num[j]<num[min])min=j;}
	for (j=0;j<max;j++)
	sum1=sum1+num[j];
	for (j=0;j<min;j++)
	sum2=sum2+num[j];
	for (i=sum1+max;i<sum1+max+num[max];i++)

	printf ("%c",str[i]);
	printf("\n");
	for (i=sum2+min;i<sum2+min+num[min];i++)
		printf("%c",str[i]);

}


int main(){
	int changdu[200];
	char zfc[2000];
	int weizhi[200];
	int n;
	int i,j;
	int k=1;
	int l;
	int s=0;
	int e,f;
	gets(zfc);
	n=strlen(zfc);
	for(i=0;i<n;i++){
		if(zfc[i]==' '||zfc[i]==','){
			weizhi[k]=i;
			k++;
		}
	}
	l=k;
	weizhi[0]=-1;
	weizhi[l]=n;
	for(k=0;k<l;k++){
		changdu[k]=weizhi[k+1]-weizhi[k]-1;
		if(changdu[k]==0){
			changdu[k]=10;
		}
	}
	for(j=0;j<l;j++){
		if(s<changdu[j]){
			s=changdu[j];
			e=j;
		}
	}
	s=10;
	for(j=0;j<l;j++){
		if(s>changdu[j]){
			s=changdu[j];
			f=j;
		}
	}
	for(i=weizhi[e]+1;i<weizhi[e+1];i++){
		printf("%c",zfc[i]);
	}
	printf("\n");
	for(i=weizhi[f]+1;i<weizhi[f+1];i++){
		printf("%c",zfc[i]);
	}
	printf("\n");
	return 0;
}


int main()
{
	char yj[5000];
	gets(yj);

	char a[20],max[20],min[20];
	int i,k;
	int first=0;
	int dx=strlen(yj);
	for(i=0;i<dx+1;i++){
		if(i==0){
			first=1;
		}else{
			first=0;
		}
		for(k=i;;k++){

			if((yj[k]!=',')&&(yj[k]!=' ')&&(yj[k]!='\0')){
				a[k-i]=yj[k];
			}else{
				a[k-i]='\0';
				i=k;
				break;
			}
		}
		if(first==1){
					strcpy(max,a);
					strcpy(min,a);
		}else{
			if(strlen(a)>strlen(max)){
						strcpy(max,a);
					}
			if(strlen(a)<strlen(min)&&strlen(a)!=0){
						strcpy(min,a);
					}
				}

	}
	printf("%s\n%s",max,min);
	return 0;
}


int main()
{
int max=0;
int x=0;
int min=20;
int y=0;
char string[4000];
char str[40][20];
char temp[20]="";
int k=0,j=0,i,n,m;

gets(string);

n=strlen(string);
for (i=0;i<n;i++)
{
if ( string[i]!=' ')
{
temp[k]=string[i];
str[j][k]=string[i];
k++;
}
else
{
strcpy(str[j],temp);
k=0;j++;
for(m=0;m<20;m++)temp[m]=0;

}
if(i==n-1){
strcpy(str[j],temp);
for(m=0;m<20;m++)temp[m]=0;
}

}
for(i=0;i<=j;i++){

if(strlen(str[i])>max){
max=strlen(str[i]);
x=i;
}
if(strlen(str[i])<min){
min=strlen(str[i]);
y=i;}
}

printf("%s\n",str[x]);
printf("%s",str[y]);
return 0;
}


int main()
{
	int n;
	scanf("%d",&n);
	char s[300],s1[300],s2[300];
	scanf("%s",s1);
	strcpy(s2,s1);
	int l,l1,l2;
	l1=l2=strlen(s1);
	n=n-1;
	while(n)
	{
		n=n-1;
		scanf("\n");
		scanf("%s",s);
		l=strlen(s);
		if (l<l1)
		{
			strcpy(s1,s);
			l1=l;
		}
		if (l>l2)
		{
			strcpy(s2,s);
			l2=l;
		}
	}
puts(s2);
printf("%s",s1);
return 0;
}


void main()
{
	int sup,inf,i=0,j,max,min;
	char str[200][100],b;
	while(1)
	{scanf("%s%c",str[i],&b);
		if(b!=' '&&b!=',') break;
		else i++;
	}
	sup=strlen(str[0]);
	max=0;
	inf=strlen(str[0]);
	min=0;
	for(j=1;j<=i;j++)
	{if(strlen(str[j])>sup)
	{sup=strlen(str[j]);
	max=j;}
	if(strlen(str[j])<inf)
	{inf=strlen(str[j]);
	min=j;}
	}
	printf("%s\n%s",str[max],str[min]);
}


int main()
{
	char zfc[3000],danci[50][50]={'0'};
	int i,j,k;
	gets(zfc);
	for(i=0,j=0,k=0;zfc[i]!='\0';i++){
		if(zfc[i]==' '){
			zfc[i]='\0';
			strcpy(danci[j],(zfc+k));
			k=i+1;
			j++;
		}

	}
	strcpy(danci[j],(zfc+k));
	j++;
	int max=strlen(danci[0]),min=strlen(danci[0]);
	char chang[50],duan[50];
	strcpy(chang,danci[0]);
	strcpy(duan,danci[0]);
	for(i=0;i<j;i++){
		if(strlen(danci[i])>max){
			max=strlen(danci[i]);
			strcpy(chang,danci[i]);
		}if(strlen(danci[i])<min){
			min=strlen(danci[i]);
			strcpy(duan,danci[i]);
		}
	}
	printf("%s\n%s\n",chang,duan);
	return 0;
}


void main()
{int flag=0,numa,i,j=-1,k=0,n=0;
char a[100],
word[50][30]={'\0'};
gets(a);
numa=strlen(a);
for(i=0;i<numa;i++)
{if(a[i]==' ')
flag=0;
else if(a[i]!=' '&&flag==0)
{j++;
k=0;
word[j][k]=a[i];
k++;
flag=1;
}
else if(a[i]!=' '&&flag==1)
{word[j][k]=a[i];
k++;
}
}

int max=0,min=0;
for(i=1;i<=j;i++)
{if(strlen(word[max])<strlen(word[i]))
max=i;
if(strlen(word[min])>strlen(word[i]))
min=i;
}
puts(word[max]);
puts(word[min]);
}


int main() {
	char str[1000];
	gets(str);
	int len;
	len=strlen(str);
	int max=0,min=10000;
	int i;
	int lenth=0;
	for(i=0;i<len;i++){
		if (str[i]!=' '){
			lenth=lenth+1;
		}
		if (str[i]==' '){
			if (lenth>max){max=lenth;}
			if (lenth<min){min=lenth;}
			lenth=0;
		}

		if (str[i+1]=='\0'){
			if (lenth>max){max=lenth;}
			if (lenth<min){min=lenth;}
		}

	}

	//printf("%d",max);
	//printf("%d",min);

	lenth=0;
	int maxpostail;
	int minpostail;
	for(i=0;i<len;i++){
		if (str[i]!=' '){
			lenth=lenth+1;
		}
		if (str[i]==' '){
			if (lenth==max){maxpostail=i-1;break;}
			lenth=0;
		}

		if (str[i+1]=='\0'){
			if (lenth==max){maxpostail=i;break;}
		}

	}
	char maxlenword[100];
	for(i=0;i<=max-1;i++){
		maxlenword[i]=str[maxpostail-(max-1)+i];
	}
	maxlenword[max]='\0';
	puts(maxlenword);
lenth=0;

for(i=0;i<len;i++){
		if (str[i]!=' '){
			lenth=lenth+1;
		}
		if (str[i]==' '){
			if (lenth==min){minpostail=i-1;break;}
			lenth=0;
		}

		if (str[i+1]=='\0'){
			if (lenth==min){minpostail=i;break;}
		}

	}
	char minlenword[100];
	for(i=0;i<=min-1;i++){
		minlenword[i]=str[minpostail-(min-1)+i];
	}
	minlenword[min]='\0';
	puts(minlenword);

	return 0;
}


int main()
{
	char b[205][100];
	int i,n,j=0,k=0,s=0,t=0,max,min;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",b[i]);
	}
	max=strlen(b[0]);
	min=strlen(b[0]);
	for (i=1;i<n;i++)
	{
		if (strlen(b[i])>max)
		{
			max=strlen(b[i]);
			s=i;
		}
		if (strlen(b[i])<min)
		{
			min=strlen(b[i]);
			t=i;
		}
	}
	printf("%s\n%s\n",b[s],b[t]);
	return 0;
}


int main(){
char zf[200];
char sl[200][200];
char z[200];
char a[100];
char max[100];
char min[100];
int i,l,k=0,t=0,m,n=0,len,ci=0;
gets(zf);
l=strlen(zf);
for(i=0;i<l;i++){
   if(zf[i]==' '){

	   n=0;
       for(m=t;m<i;m++){
           sl[k][n]=zf[m];
           n++;
	   }
       sl[k][n]='\0';
       t=i+1;
       k++;

    }
}
n=0;
 for(m=t;m<l;m++){
           sl[k][n]=zf[m];
           n++;
	   }
       sl[k][n]='\0';
len=k+1;

strcpy(max,sl[0]);
strcpy(min,sl[0]);

    for(k=0;k<len;k++){
        if(strlen(sl[k])>strlen(max)){
           strcpy(max,sl[k]);
		}
		if(strlen(sl[k])<strlen(min)){
           strcpy(min,sl[k]);
		}
}
printf("%s\n",max);
printf("%s\n",min);

return 0;
}


int main()
{
  char input[LEN];
  int max=0,min=0,mxlen=0,mnlen=1000;
  int i=0,j,k=0;
  int word,num;
  fgets(input,LEN,stdin);
  while(input[i]!='\0')
    {
      j=0;
      while(isalpha(input[i]))
	{
	  i++;
	  j++;
	}
      while((!isalpha(input[i]))&&(input[i]!='\0'))
	i++;
      if(j>0)
	{
	  k++;
	  max=(mxlen>=j)? max:k;
	  min=(mnlen<=j)? min:k;
	  mxlen=(mxlen>=j)? mxlen:j;
	  mnlen=(mnlen<=j)? mnlen:j;
	}
    }
  word=0;
  num=0;
  for(i=0;input[i]!='\0';i++)
    {
      if(!isalpha(input[i]))
	 word=0;
      else if(word==0)
	{
	  word=1;
	  num++;
	}
      if(num==max)
	break;
    }
  for(j=0;j<mxlen;j++)
    printf("%c",input[i+j]);
  printf("\n");
  word=0;
  num=0;
  for(i=0;input[i]!='\0';i++)
    {
      if(!isalpha(input[i]))
	 word=0;
      else if(word==0)
	{
	  word=1;
	  num++;
	}
      if(num==min)
	break;
    }
  for(j=0;j<mnlen;j++)
    printf("%c",input[i+j]);
  printf("\n");
  return 0;
}


void main()
{
    int i,j,k,flu,max_len=0,min_len=100,max_num,min_num;
    char ch[20000],str[200][100];
    gets(ch);
    for(i=j=k=flu=0;i<strlen(ch);i++)
        if(ch[i]!=' '&&ch[i]!=',')
        {
            flu=1;
            str[k][j++]=ch[i];
        }
        else if(flu==1)
        {
            str[k++][j]='\0';
            j=flu=0;
        }
    if(flu==1)
        str[k++][j]='\0';
    for(i=0;i<k;i++)
    {
        if(max_len<strlen(str[i]))
        {
            max_len=strlen(str[i]);
            max_num=i;
        }
        if(min_len>strlen(str[i]))
        {
            min_len=strlen(str[i]);
            min_num=i;
        }
    }
    printf("%s\n",str[max_num]);
    printf("%s\n",str[min_num]);
}


int main(){
int len[50];
int mark=0,a=0,b,B=0,i,n,minIndex,maxIndex;
char s[999];
char zfc[50][50];
gets(s);

for(a=0;a<50;a++){
	for(b=B,i=0;b<999,i<50;b++,i++){
		if((s[b]!=' ')&&(s[b]!='\0')){
		zfc[a][i]=s[b];
		}
		else if((s[b]==' ')&&(s[b]!='\0')){
		mark++;
		B=b+1;
		break;
		}
		else if(s[b]=='\0'){
			mark++;
			break;
		}

		zfc[a][i+1]='\0';
	}
		if(s[b]=='\0'){
			break;}

//printf("zfc a %s\n",zfc[a]);
}

for(n=0;n<mark;n++){
                len[n]=strlen(zfc[n]);
}

maxIndex=0;
minIndex=0;
for(n=1;n<mark;n++){
             	if(len[n]>len[maxIndex]){
	               maxIndex=n;
				}
                else if(len[n]<len[minIndex]){
	                    minIndex=n;
				}
}
printf("%s\n%s\n",zfc[maxIndex],zfc[minIndex]);

return 0;
}


int main()
{
	char u[50][100];
	char buf[5000];

	int i=0,j,k,a[50],c=0,d=100, n, ret ;
    int index;
	int max, min;

	gets(buf);
	j = 0;

	int len = strlen(buf);
	//printf("  ---  buf=%d\n", strlen(buf));

	buf[strlen(buf)] = ' ';
	buf[strlen(buf)+1] = '\0';

	for (i = 0; i < len; i++) {
		index = 0;
		while (buf[i]!=' ') {
			u[j][index] = buf[i];
			index++;
			i++;
		}
		u[j][index] = '\0';
		a[j] = strlen(u[j]);
		//printf("%s, %d, %d\n", u[j], a[j], j);
		j++;
		//printf("i = %d\n", i);
	}
    //printf("-----\n");
	n = j;
    for(i=0;i<n;i++)
	{
		if(a[i]>c) {
			c = a[i];
			max = i;
		}
	}
	for(j=0;j<n;j++)
	{
		if(a[j]<d)
		{
			d = a[j];
			min = j;
		}

	}
	//printf("%d, %d\n", max, min);

    printf("%s\n",u[max]);
	printf("%s",u[min]);

    return 0;
}


void main()
{
	int i;
	char a[20],b[20],c[20],d;
	scanf("%s",&a);
	strcpy(b,a);
	strcpy(c,a);
	for(i=1;i<=100;i++)
	{
		d=getchar();
		if(d=='\n')
			break;
		else
			scanf("%s",&a);
			if(strlen(a)>strlen(b))
				strcpy(b,a);
			if(strlen(a)<strlen(c))
				strcpy(c,a);
	}
	printf("%s\n%s\n",b,c);
}


int main()
{
	int min = INT_MAX;
	int max = 0;
	char str[100000] = {0};
	cin.getline(str,100000);

	char* minstart;
	char* minend;
	char* maxstart;
	char* maxend;
	int temp = 0;;
	char* p = str;
	for (;*p; p++)
	{
		if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))
			temp ++;
		else
		{
			if (temp > 0)
			{
				if (temp < min)
				{
					minstart = p - temp;
					minend = p - 1;
					min = temp;
				}
				if (temp > max)
				{
					maxstart = p - temp;
					maxend = p - 1;
					max = temp;
				}
				temp = 0;
			}
		}
	}
	if (temp > 0)
	{
		if (temp < min)
		{
			minstart = p - temp;
			minend = p - 1;
			min = temp;
		}
		if (temp > max)
		{
			maxstart = p - temp;
			maxend = p - 1;
			max = temp;
		}
	}
	for (;maxstart <= maxend; maxstart++)
		cout << *maxstart;
	cout << endl;
	for (;minstart <= minend; minstart++)
		cout << *minstart;
}


int main(int argc, char *argv[])
{
    char s[500],words[50][500];
    int  n,k,i,len[50],max=0,min=100000,da=0,xiao=0;
    gets(s);

     // ?s???????????words?
    n = 0; k = 0;
    for (i = 0; s[i]!=0; i++) {
        if (s[i] == ' ') {
            s[i] = '\0';
            strcpy(words[n], (s + k));
            n++;
            k = i + 1;
        }
    }
    strcpy(words[n], (s + k));
    n++;

    for(i=0;i<n;i++){
                     len[i]=strlen(words[i]);
                     if(len[i]>max){
                                    da=i;
                                    max=len[i];
                                    }
                                    }

    for(i=0;i<n;i++){
                     len[i]=strlen(words[i]);
                     if(len[i]<min){
                                    xiao=i;
                                    min=len[i];
                                    }
                                    }

    printf("%s\n",words[da]);
    printf("%s\n",words[xiao]);

  return 0;
}


int main(){
	char s[1000],word[100][20];
	gets(s);
	int l,i,k=0,n=0;
	l=strlen(s);
	for(i=0;i<l;i++){
		if(s[i]==' '){
			s[i]='\0';
			strcpy(word[n],s+k);
			n++;
			k=i+1;
		}
	}
	strcpy(word[n],s+k);
	int max=0,min=0;
	for(i=0;i<=n;i++){
		if(strlen(word[max])<strlen(word[i])) max=i;
		if(strlen(word[min])>strlen(word[i])) min=i;
	}
    puts(word[max]);
	puts(word[min]);
	return 0;
}


int main()
{
    char s[453];

    char words[100][101];

    int i,k, n;

    // ???????
    gets(s);

    // ?s???????????words?
    n = 0; k = 0;
    for (i = 0; s[i] != 0; i++) {
        if (s[i] == ' '||s[i]==',') {
            s[i] = '\0';
            strcpy(words[n], (s + k));
            n++;
            k = i + 1;
        }
    }
    strcpy(words[n], (s + k));
    n++;

    // ????words??????
    int maxlen=0, minlen=0;
    for ( i = 0; i < n; i++) {
		if (words[i][0]!='\0'){
       if (strlen(words[maxlen])<strlen(words[i])){
       maxlen=i;
	   }

       if(strlen(words[minlen])>strlen(words[i])){
       minlen=i;}
		}
    }
    printf("%s\n%s\n",words[maxlen],words[minlen]);

    return 0;
}


void main()
{
	int i,j,maxlen=0,minlen,max=0,min=0;
	char a[999][50]={0};
	scanf("%s",a[0]);
	for(i=1;getchar()!='\n';i++)
		scanf("%s",a[i]);
	minlen=strlen(a[0]);
	for(j=0;j<i;j++)
	{
		if(strlen(a[j])>maxlen)
		{
			maxlen=strlen(a[j]);
			max=j;
		}
		if(strlen(a[j])<minlen)
		{
			minlen=strlen(a[j]);
			min=j;
		}
	}
	printf("%s\n%s",a[max],a[min]);
}


int main()
{
	int i = 0;
	int max[2] = {0, 0};
	int min[2] = {100, 0};
	char word[200][100];
	int leg[200];
	while(scanf("%s", word[i]) != EOF)
	{
		leg[i] = strlen(word[i]);
		if (leg[i] > max[0])
		{
			max[0] = leg[i];
			max[1] = i;
		}
		if (leg[i] < min[0])
		{
			min[0] = leg[i];
			min[1] = i;
		}
		i++;
	}
	cout << word[max[1]] << endl;
	cout << word[min[1]] << endl;
	return 0;
}


int main(int argc, char *argv[])
{
  char a[50][80];
  scanf("%s",a[0]);
  int i,j=0,k;
  for(i=1;getchar()==' ';i++)
   scanf("%s",a[i]);

  char (*max)[],(*min)[];
   max=&a[0];
   min=&a[0];
  for(j=1;j<i;j++)
  {
       if(strlen(*max)<strlen(a[j]))
         max=&a[j];
       if(strlen(*min)>strlen(a[j]))
         min=&a[j];
  }
  puts(*max);
  puts(*min);

  return 0;
}


void main() {
    char str[1000];
    gets(str);
    int len;
    len=strlen(str);
    int max=0,min=10000;
    int i;
    int lenth=0;
    for(i=0;i<len;i++){
        if (str[i]!=' '){
            lenth=lenth+1;
        }
        if (str[i]==' '){
            if (lenth>max){max=lenth;}
            if (lenth<min){min=lenth;}
            lenth=0;
        }

        if (str[i+1]=='\0'){
            if (lenth>max){max=lenth;}
            if (lenth<min){min=lenth;}
        }

    }
    lenth=0;
    int maxpostail;
    int minpostail;
    for(i=0;i<len;i++){
        if (str[i]!=' '){
            lenth=lenth+1;
        }
        if (str[i]==' '){
            if (lenth==max){maxpostail=i-1;break;}
            lenth=0;
        }

        if (str[i+1]=='\0'){
            if (lenth==max){maxpostail=i;break;}
        }

    }
    char maxlenword[100];
    for(i=0;i<=max-1;i++){
        maxlenword[i]=str[maxpostail-(max-1)+i];
    }
    maxlenword[max]='\0';
    puts(maxlenword);
lenth=0;

for(i=0;i<len;i++){
        if (str[i]!=' '){
            lenth=lenth+1;
        }
        if (str[i]==' '){
            if (lenth==min){minpostail=i-1;break;}
            lenth=0;
        }

        if (str[i+1]=='\0'){
            if (lenth==min){minpostail=i;break;}
        }

    }
    char minlenword[100];
    for(i=0;i<=min-1;i++){
        minlenword[i]=str[minpostail-(min-1)+i];
    }
    minlenword[min]='\0';
    puts(minlenword);
}


void sub(char c[])
{
	int i,l;
	l=strlen(c);
	for (i=0;i<l;i++)
	{
		if (c[i]==',')
			c[i]=' ';
	}
}

void main()
{
	int i,j=0,k=0,l,max=0,rmax=0,min=0,rmin=0;
	char c[2000]={'\0'},word[200][100]={'\0'};
	gets(c);
	sub (c);
	l=strlen(c);
	for (i=0;i<l;i++)
	{
		if (c[i]==' ')
		{
			j++;
			word[j][k]='\0';
			k=0;
		}
		else
		{
			word[j][k]=c[i];
			k++;
		}
	}
	min=strlen(word[0]);
	max=strlen(word[0]);
	for (;j>=0;j--)
	{
		l=strlen(word[j]);
		if (l>=max)
		{
			max=l;
			rmax=j;
		}
		if (l<=min && l>0)
		{
			min=l;
			rmin=j;
		}
	}
	printf ("%s\n",word[rmax]);
	printf ("%s\n",word[rmin]);
}


int main()
{
	char ch[10005];

	int m,n,i,k,ch1[2005]={0},max,min,zd,zx,zd1,zx1;
	scanf("%d",&n);
	getchar();
	gets(ch);
	m=strlen(ch);
	for(i=0,k=0;i<m;i++)
	{
		if(ch[i]==' ')
			k=i+1;
		else if(ch[i]==',')
			k=i+1;
		else
		{

			ch1[k]++;
		}
	}
	min=ch1[0];
	zx=0;
	max=ch1[0];
	zd=0;
	for(i=0;i<m;i++)
	{
		if(ch1[i]==0)
			continue;
		if(ch1[i]<min)
		{
			min=ch1[i];
			zx=i;
		}
		if(ch1[i]>max)
		{
			max=ch1[i];
			zd=i;
		}
	}
	//printf("??%d ????%d ??%d ????%d\n",max,zd,min,zx);
	zd1=zd;
	for(zd=zd;zd<zd1+max;zd++)
		printf("%c",ch[zd]);
	printf("\n");

	zx1=zx;
	for(zx;zx<zx1+min;zx++)
		printf("%c",ch[zx]);
	printf("\n");

	return 0;
}


int getstr(char str[],char s[],int m,int n){
int i,j=0;
for(i=m+1;i<n;i++,j++)
s[j]=str[i];
for(i=j;i<strlen(s);i++)
s[i]=0;
return 0;
}
int main(){
char snt[300],word[49][20],*p,*q;
int len,label[50]={0},i,j=0,k,l=0;
gets(snt);
len=strlen(snt);
for(i=0;i<len;i++)
if(snt[i]==' ')
label[j++]=i;
for(i=1;i<j;i++)
getstr(snt,word[i],label[i-1],label[i]);
for(k=0;k<label[0];k++)
*(word[0]+k)=*(snt+k);
*(word[0]+k)='\0';
for(k=label[j-1]+1;k<len;k++,l++)
*(word[j]+l)=*(snt+k);
*(word[j]+l)='\0';
p=word[0];
for(k=0;k<j;k++)
if(strlen(word[k+1])>strlen(p))
p=word[k+1];
printf("%s\n",p);
q=word[0];
for(k=0;k<j;k++)
if(strlen(word[k+1])<strlen(q))
q=word[k+1];
printf("%s\n",q);
return 0;
}


int main()
{
    char s[5000];
    char words[1000][1000];
    int i, k=0, n=0,a,b;
    gets(s);
    for (i=0; s[i]!=0; i++) {
        if (s[i] == ' ')
		{
            s[i] = '\0';
            strcpy(words[n], (s+k));
            n++;
            k=i+1;
        }
    }
    strcpy(words[n], (s+k));
    n++;
    a=strlen(words[0]);
	b=strlen(words[0]);

	for(i=0;i<n;i++)
	{
		if(a>strlen(words[i]))
		{
			a=strlen(words[i]);
		}
	    if(b<strlen(words[i]))
		{
			b=strlen(words[i]);
		}
	}

	for(i=0;i<n;i++)
	{
		if(b==strlen(words[i]))
		{
			printf("%s\n",words[i]);
			break;
		}
	}
	for(i=0;i<n;i++)
	{
		if(a==strlen(words[i]))
		{
			printf("%s",words[i]);
			break;
		}
	}

    return 0;
}


void main()
{
	char a[200][20],temp;
	int i,n,l[200]={0};
	int min,max;
	for(i=0;i<200;i++)
	{
		scanf("%s%c",a[i],&temp);
		l[i]=strlen(a[i]);
		if(temp=='\n') {n=i+1;break;}
	}
	min=max=0;
	for(i=0;i<n;i++)
	{
		if(l[i]>l[max]) max=i;
		if(l[i]<l[min]) min=i;
	}
	printf("%s\n",a[max]);
	printf("%s\n",a[min]);
}


int main()
{
	char str[5000],t[50][50];
	int a[50],b[50];
	char *s,*p;
	s=str;
	gets(s);
	strcat(s," ");
	int count=0;
	while(*s){
		p=strchr(s,' ');
		*p='\0';
		strcpy(t[count],s);
		a[count]=strlen(t[count]);
		b[count]=a[count];
		count++;
		s=p+1;
	}
	int max=0,min=0;
	for(int i=0;i<count;i++){
		if(a[i]>a[max]){
			max=i;
		}
	}
	for(int j=0;j<count;j++){
		if(b[j]<b[min]){min=j;
		}
	}
	printf("%s\n%s",t[max],t[min]);
	return 0;
}


struct word
{
    char a[40];
    int b;
};
int main()
{
   int n;scanf("%d",&n);
   int i;
   struct word dd[200]={0};

   for(i=0;i<n;i++)
   {
       scanf("%s",dd[i].a);
        dd[i].b=strlen(dd[i].a);
   }
   int max=dd[0].b;int x=0;
   int min=dd[0].b;int y=0;
   for(i=0;i<n;i++)

   {
       if(dd[i].b>max)
       {
           max=dd[i].b;
           x=i;
       }
       if(dd[i].b<min)
       {
           min=dd[i].b;
           y=i;
       }
   }
   printf("%s\n%s",dd[x].a,dd[y].a);
/*printf("%d %d ",max,min);*/
    return 0;
}


int main()
{  char str[10000];
   gets(str);
   char word[50],longword[50],shortword[50];
   int longnum=0,shortnum=50,k=0,i,j,num=0;
   for(i=0;i<strlen(str);i++)
   {
          if(str[i]!=' '&&str[i]!=',')
          {     num++;
                word[k]=str[i];
                k++;

          }
           if(((str[i]==' '||str[i]==',')&&str[i-1]!=' '&&str[i-1]!=',')||str[i+1]==0)
           {    if(longnum<num)
                {longnum=num;
                 strcpy(longword,word);
                }
                if(shortnum>num)
                {shortnum=num;
                 strcpy(shortword,word);
                }
                num=0;
                k=0;
               for(j=0;word[j]!=0;j++)
               {word[j]=0;}
           }
   }
   longword[longnum]='\0';

   printf("%s\n%s",longword,shortword);
return 0;
}


char ls[1000], ss[1000];
int max, min;
int cl;
char buf[1000];

int main() {
    max = -1;
    min = 0x7fffffff;
    while(scanf("%s", buf) != EOF) {
        cl = strlen(buf);
        if(cl > max) {
            max = cl;
            strcpy(ls, buf);
        }
        if(cl < min) {
            min = cl;
            strcpy(ss, buf);
        }
    }
    puts(ls);
    puts(ss);
return 0;
}


int main(void)
{
	char str[2000],max[2000],min[2000];
	gets(str);
	char *p,*pM;
	int mi=strlen(str)+1,ma=0;
	p=str;pM=str;
	for(;;pM++)
	{
		if(*pM==' '||*pM==',')
		{
			*pM='\0';
			if(pM-p)
			{
				if(pM-p>ma) {strcpy(max,p);ma=pM-p;}
				if(pM-p<mi) {strcpy(min,p);mi=pM-p;}
			}
			p=pM+1;
		}
		else if(*pM=='\0')
		{
			if(pM-p)
			{
				if(pM-p>ma) {strcpy(max,p);ma=pM-p;}
				if(pM-p<mi) {strcpy(min,p);mi=pM-p;}
			}
			break;
		}
	}
	puts(max);
	puts(min);
	return 0;
}


int main()
{
	char word[50][51];
	int m,i,c,d,chang=0,duan=51,a,j;
	for(m=0;;m++)
	{
		for(j=0;;j++)
		{

				scanf("%c",&word[m][j]);
				if(word[m][j]==32) break;
				if(word[m][j]==10) goto loop;
		}

	}
loop:	for(i=0;i<=m;i++)
		{
			a=0;
			for(j=0;;j++)
			{
				if(word[i][j]==32) break;
				if(word[i][j]==10) break;
				a++;
			}
	     	if(a<duan)
			{
				duan=a;
				d=i;
			}
	     	if(a>chang)
			{
				chang=a;
			    c=i;
			}
		}
		for(i=0;;i++)
		{
			if(word[c][i]==32||word[c][i]==10) break;
			printf("%c",word[c][i]);
		}
		printf("\n");
		for(i=0;;i++)
		{
			if(word[d][i]==32||word[d][i]==10) break;
         	printf("%c",word[d][i]);
		}
}


void main()
{
	char string[50][50]={0};
	int len[50]={0};
	int i=0,num=0,max,min;
	int maxi,mini;
	while( scanf("%s",string[i])!=EOF ){
		len[i]=strlen(string[i]);
		i++;
	}
	num=i;

	max=min=len[0];
	maxi=mini=0;
	for(i=1;i<num;i++){
		if(len[i]>max){
			max=len[i];
			maxi=i;
		}
		else if(len[i]<min){
			min=len[i];
			mini=i;
		}
	}
	printf("%s\n",string[maxi]);
	printf("%s\n",string[mini]);
}


void main()
{
int n=0,i,word=0,num=0,max=0,min=20,mx=0,mn=0;
char string[500];
int wn[50],wm[50];
for(i=0;i<50;i++) wn[i]=1;
gets(string);
for(i=0;string[i]!='\0';i++)
  {if(string[i]==' ') {word=0;n++;}
  else if(word==0){word=1;num++;wm[n]=i;}
  else if(word) wn[n]++;}

for(i=0;i<num;i++)
  {if(wn[i]>max) {max=wn[i];mx=wm[i];}
   if(wn[i]<min) {min=wn[i];mn=wm[i];}}
for(i=mx;i<mx+max;i++)
printf("%c",string[i]);
printf("\n");
for(i=mn;i<mn+min;i++)
printf("%c",string[i]);
printf("\n");
}


int main()
{
	char s[1000], *max, *min;
	gets(s);

	int i, mina=0, minb=50, maxa=0, maxb=0, ta=0, tb;
	int n = strlen(s);
	for(i=1; i<n+1; i++)
	{
		if(s[i] == ' ' || s[i] == '\0')
		{
			s[i] = '\0';
			tb = i;
			if(tb - ta > maxb - maxa)
			{
				maxb = tb;
				maxa = ta;
			}
			if(tb - ta < minb - mina)
			{
				minb = tb;
				mina = ta;
			}
			ta = tb + 1;
		}
	}
	max = &s[maxa];
	min = &s[mina];
	printf("%s\n%s", max, min);

	return 0;
}


int main()
{
	int h=0,k=0,i,j,len;
	char zfc[1000];
	char word[50][20];
	char temp[50];
	gets(zfc);
	for(i=0;i<strlen(zfc)+1;i++){
		if(zfc[i]!=' '){
		word[h][k]=zfc[i];
		k++;
		}
		else if(zfc[i]=='\0')
		{
			word[h][k]='\0';
		}
		else
		{
			word[h][k]='\0';
			h++;
			k=0;
		}
	}

	len=h+1;
	 for(j=1;j<=len;j++){
		for(h=0;h<len-j;h++){
			if(strlen(word[h])>strlen(word[h+1])){
				strcpy(temp,word[h]);
				strcpy(word[h],word[h+1]);
				strcpy(word[h+1],temp);
			}
		}
	 }
  puts (word[len-1]);
  puts (word[0]);
  return 0;
}


int main()
{
	char a[200];
	cin.getline(a, 200);
	int len = strlen(a);
	int i = 0, min = 20, max = 0, mini, maxi, l = 0;
	for(i = 0; i <= len; i++)
	{
		if(a[i] != ' ' && a[i] != ',' && a[i] != '\0')
			l++;
		else if(a[i-1] != ' ' && a[i-1] != ',' && a[i-1] != '\0')
		{
			if(min > l)
			{
				min = l;
				mini = i;
			}
			if(max < l)
			{
				max = l;
				maxi = i;
			}
			l = 0;
		}
	}
	for(i = maxi - max; i < maxi; i++)
		cout << a[i];
	cout << endl;
	for(i = mini - min; i < mini; i++)
		cout << a[i];
	cout << endl;
	return 0;
}


int main()
{
	char str[200][200], ch;
	int i = 0, j = 0, count, longest = 0, shortest = 200, max, min, len[200];
	while ((ch = cin.get()) != '\n')
	{
		if (ch == ' ' || ch == ',')
		{
			if(j != 0)
			{
				len[i] = j;
				i++;
				j = 0;
			}
		}
		else
		{
			str[i][j++] = ch;
		}
	}
	len[i] = j;
	count = i;
	for (i = 0; i <= count; i++)
	{
		if (len[i] < shortest)
		{
			shortest = len[i];
			min = i;
		}
		if (len[i] > longest)
		{
			longest = len[i];
			max = i;
		}
	}
	for (i = 0; i < longest; i++)
		cout << str[max][i];
	cout << endl;
	for (i = 0; i < shortest; i++)
		cout << str[min][i];
	cout << endl;
	return 0;
}


int main(){
	char sentence[5000];
	gets(sentence);
	char word[50][100];
	int i,k=0,n=0,len;
	len=strlen(sentence);
	for (i=0;i<len;i++){
		if(sentence[i]!=' '){
			word[n][k]=sentence[i];
			k++;
		}
		else{
			word[n][k]='\0';
			n++;
			k=0;
		}
	}
	word[n][k]='\0';
	int max=0,min=0;
	for (i=0;i<n+1;i++){
		if(strlen(word[i])<strlen(word[min])){
			min=i;
		}
		if(strlen(word[i])>strlen(word[max])){
			max=i;
		}
	}
	puts(word[max]);
	puts(word[min]);
	return 0;
}


int main()
{
	int i,j=0,n,flag=0,max,min,s,t,p;
	char a[2000]={'\0'};
	char b[200][24]={'\0'};
	scanf("%d\n",p);
	gets(a);
	n=strlen(a);
	for (i=0;;i++)
	{
		for (j=0;j+flag<=n;j++)
		{
			if (a[j+flag]==' ')
			{	flag=j+flag+1;
			    j=0;
                break;
			}
			else if (a[j+flag]==',')
			{  	flag=j+flag+2;
			    j=0;
                break;
			}
			else
				b[i][j]=a[j+flag];
		}
		if (j+flag==n+1)
			break;
	}
	max=strlen(b[0]),s=0;
	min=strlen(b[0]),t=0;
	for (j=1;j<=i;j++)
	{
		if (strlen(b[j])>max)
		{
			max=strlen(b[j]);
			s=j;
		}
		if (strlen(b[j])<min)
		{
			min=strlen(b[j]);
			t=j;
		}
	}

	printf("%s\n%s\n",b[s],b[t]);

	return 0;
}


void main()
{
	int i,j,k,max,min;
	char (*p)[30];
	int *q;
	q=(int *)malloc(100*sizeof(int));
	p=(char(*)[30])malloc(100*30*sizeof(char));
	for(i=0;scanf("%s",&p[i])!=EOF;i++)
	{
		q[i]=strlen(p[i]);
	}
	max=0;
	for(j=0;j<i;j++)
	{
		if(max<q[j])max=q[j];
	}
	for(j=0;j<i;j++)
	{
		if(max==q[j])
		{
			printf("%s\n",p[j]);
			break;
		}
	}
	min=max+1;
	for(j=0;j<i;j++)
	{
		if(min>q[j])min=q[j];
	}
	for(j=0;j<i;j++)
	{
		if(min==q[j])
		{
			printf("%s",p[j]);
			break;
		}
	}
}


void main()
{
	char s[300][100];
	char max[100],min[100];
	int ma=0,mi=100,i,j,a;

	for(i=0;;i++)
	{
		memset(s[i],0,sizeof(s[i]));
		for(j=0;;j++)
		{
			scanf("%c",&s[i][j]);//printf("%s\n",s[i]);
			if(s[i][j]==' '||s[i][j]=='\n')
			{
				if(s[i][j-1]==',')
				{
					a=strlen(s[i])-1;
					if(a>ma) {ma=a;memset(max,0,sizeof(max));strncpy(max,s[i],a);}
					if(a<mi) {mi=a;memset(min,0,sizeof(min));strncpy(min,s[i],a);}
					break;
				}
				//printf("m\n");
				else
				{
					a=strlen(s[i]);
					if(a>ma) {ma=a;memset(max,0,sizeof(max));strncpy(max,s[i],a-1);}
					if(a<mi) {mi=a;memset(min,0,sizeof(min));strncpy(min,s[i],a-1);}
					break;
				}
			}
		}
		if(s[i][j]=='\n') break;
	}
	printf("%s\n%s",max,min);
}


int main()
{
	char s[3000],word[50][200]={0};
	int a,i;
	int word_num=0,char_num=0;
	int min_num,max_num;
	int min=0,max=0;

	gets(s);

	a=strlen(s);
	for(i=0;i<a;i++)
	{
		if(s[i]!=' ')
		{
			word[word_num][char_num]=s[i];
			char_num++;
		}
		else if(s[i]==' '){
			word_num++;
			char_num=0;
		}
	}

	min_num=strlen(word[0]);
	max_num=strlen(word[0]);
	for(i=1;i<=word_num;i++)
	{
		if(strlen(word[i])<min_num)
		{
			min_num=strlen(word[i]);
			min=i;
		}
		if(strlen(word[i])>max_num)
		{
			max_num=strlen(word[i]);
			max=i;
		}
	}

	printf("%s\n%s\n",word[max],word[min]);

	return 0;
}


char a[100000];
int main()
{
	char b[100][100];
	gets(a);
	int l=strlen(a);
	int n=0,k=0,i;
	for(i=0;i<l;i++)
	{
		if(a[i]!=' '&&a[i]!=',')
		{
			b[n][k]=a[i];
			k++;
		}
		else
		{
			b[n][k]='\0';
			n++;
			k=0;
		}
	}
	b[n][k]='\0';
	int len[100],m=0;
	for(i=0;i<=n;i++)
	{
		len[m]=strlen(b[i]);
		m++;
	}
	int ma=len[0];
	int pan=0;
	for(i=0;i<m;i++)
	{
		if(ma!=len[i])
		{
			pan=1;
			break;
		}
	}
	if(pan==0)
	{
		printf("%s\n",b[0]);
		printf("%s\n",b[0]);

	}
	else
	{
		int max=len[0],min=len[0];
		int pp;
		for(pp=0;pp<=n;pp++)
		{
			if(len[pp]>max)
			{
				int e;
				e=max;
				max=len[pp];
				len[pp]=e;
			}
		}
		for(pp=0;pp<=n;pp++)
		{
			if(len[pp]<min&&len[pp]!=0)
			{
				int e1;
				e1=min;
				min=len[pp];
				len[pp]=e1;
			}
		}
		for(pp=0;pp<=n;pp++)
		{
			if(strlen(b[pp])==max)
			{
				printf("%s\n",b[pp]);
				break;
			}
		}
		for(pp=0;pp<=n;pp++)
		{
			if(strlen(b[pp])==min)
			{
				printf("%s\n",b[pp]);
				break;
			}
		}
	}
	return 0;
}


int zimu(char c)
{
	if((c>=65&&c<=90)||(c>=97&&c<=122))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int main()
{
	char str[500];
	int max1=0;
	int max2=0;
	int min1=0;
	int min2=0;
	int max=0;
	int min=51;
	int flag=0;
	int i,k,len=0;
	gets(str);
	k=strlen(str);
	if(k>50)
	{
		k=50;
	}
	flag=0;
	for(i=0;i<k;i++)
	{
		if(zimu(str[i])==1&&flag==0)
		{
			if(i!=k-1)
			{
			len=1;
			flag=1;
			}
			else if(i==k-1)
			{
				if(max<1)
				{
					max1=i;
					max2=i+1;
				}

				if(min>1)
				{
					min1=i;
					min2=i+1;
				}
			}

		}
		else if(zimu(str[i])==1&&flag==1&&(i!=k-1))
		{
			len++;
		}
		else if(zimu(str[i])==1&&flag==1&&(i==k-1))
		{
			len++;
			if(len>max)
			{
				max1=i-len+1;
				max2=i+1;
				max=len;
			}
			if(len<min)
			{
				min1=i-len+1;
				min2=i+1;
				min=len;
			}
		}
		else if(zimu(str[i])==0&&flag==1)
		{
			flag=0;
			if(len>max)
			{
				max1=i-len;
				max2=i;
				max=len;
			}
			if(len<min)
			{
				min1=i-len;
				min2=i;
				min=len;
			}
		}
	}
	for(i=max1;i<max2;i++)
	{
		printf("%c",str[i]);
	}
	printf("\n");
	for(i=min1;i<min2;i++)
	{
		printf("%c",str[i]);
	}
	printf("\n");
  return 0;
}


int main(int argc, char *argv[])
{
  char a[1000];
  int n,i,mina,minb,maxa,maxb,l=1,lmin=1000,lmax=0;
  gets(a);
  n=strlen(a);
  for(i=1;i<=n-1;i++)
  {
      if(a[i]!=' '&&i!=n-1)
      {
          l++;
      }
      else
      {
              if(i==n-1)
              {
                  l++;
                  i++;
              }
              if(l>lmax)
              {
                  lmax=l;
                  maxa=i-l;
                  maxb=i-1;
              }
              if(l<lmin)
              {
                  lmin=l;
                  mina=i-l;
                  minb=i-1;
              }
              l=0;
      }
  }
  for(i=maxa;i<=maxb;i++)
      printf("%c",a[i]);
  printf("\n");
  for(i=mina;i<=minb;i++)
      printf("%c",a[i]);

  return 0;
}


int main(void)
{
	char str[2000];
	char *media;media=str;
	char min[2000],max[2000];

    gets(str);
    int Mi=strlen(str)+1,Ma=0,strn;
	char *p;p=str;
	for(;;)
	{
		if(*media==' '||*media==',')
		{
			*media='\0';
			strn=media-p;
			if(strn>Ma) {strcpy(max,p);Ma=strn;}
			if(strn<Mi&&strn) {strcpy(min,p);Mi=strn;}
			p=media+1;
		}
		else if(*media=='\0')
		{
			strn=strlen(p);
			if(strn>Ma) {strcpy(max,p);Ma=strn;}
			if(strn<Mi) {strcpy(min,p);Mi=strn;}
			break;
		}
		media++;
	}
	puts(max);
	puts(min);
	return 0;
}


int main ()
{
	char a[100],d[100][100]={0},*p1, *p3, *p2;
	char longest[30], shortest[30];
	int i=0, j=0, k=0,flag=1;
	gets (a);

	p1=a;
	while (*(p1+i))
	{
		if(*(p1+i)!=' ')
        {
			d[j][k]=*(p1+i);
			k++;
        }
		if(*(p1+i)==' ')
		{
			j++;
			k=0;
		}
		i++;
	}
	strcpy(longest,d[0]);
	strcpy(shortest,d[0]);
	for(k=0;k<j+1;k++)
	{
		if(strlen(d[k])>strlen(longest))
		{
			strcpy(longest,d[k]);
		}
		if(strlen(d[k])<strlen(shortest))
		{
			strcpy(shortest,d[k]);
		}
    }

	printf("%s",longest);
	printf ("\n");
	printf("%s",shortest);
	printf ("\n");
	return 0;
}


int main()
{
	char a[100000];
	gets(a);
	int b;
	b=strlen(a);
	char max[40],min[40],temp[40];
	int i,len=0,minn=30,maxx=0;
	for(i=0;i<b;i++)
	{
		if(a[i]!=' '&&a[i]!=',')
		{
			temp[len]=a[i];
			len++;
		}
		if((a[i]==' '||a[i]==','||i==b-1)&&len!=0)
		{
			temp[len]='\0';
			if(len>maxx)	{strcpy(max,temp);	maxx=len;}
			if(len<minn)	{strcpy(min,temp);	minn=len;}
			len=0;
		}
	}
	printf("%s\n%s\n",max,min);
	return 0;
}


int main()
{
	int num, longest = 0, shortest = 15;
	char a[201], *p = a, *longplace, *shortplace;
	cin.getline(a,201);
	while (*p != '\0')
	{
		num = 0;
		while (*p != ' ' && *p != ',' && *p != '\0')
		{
			num++;
			p++;
		}
		if (num > longest)
		{
			longest = num;
			longplace = p - num;
		}
		if (num < shortest)
		{
			shortest = num;
			shortplace = p - num;
		}
		if (*p != '\0')
		{
			p++;
		}
		if (*p == ' ')
		{
			p++;
		}
	}
	for (p = longplace; p <= longplace + longest - 1; p++)
	{
		cout << *p;
	}
	cout << endl;
	for (p = shortplace; p <= shortplace + shortest - 1; p++)
	{
		cout << *p;
	}
	cout << endl;

	return 0;
}


void main()
{
	char a[1000],b[100][100]={""},longstr[100]={""},shortstr[100]={""};
	int i,k=0,j=0;
	gets(a);
	for(i=0;a[i]!='\0';i++)
	{

		b[k][j]=a[i];
		j++;
		if(a[i]==32)
		{
			b[k][j-1]='\0';
			k=k+1;
			j=0;

		}
	}
	strcpy(longstr,b[0]);
	strcpy(shortstr,b[0]);
	for(i=0;i<=k;i++)
	{

		if(strlen(b[i])>strlen(longstr))
			strcpy(longstr,b[i]);
		if(strlen(b[i])<strlen(shortstr))
			strcpy(shortstr,b[i]);
	}
	printf("%s\n%s\n",longstr,shortstr);
}


int check(char c)
{
	if(c<='z'&&c>='a')return 0;
	if(c<='Z'&&c>='A')return 0;
	if(c=='\'')return 0;
	return 1;
}
void main()
{
	int check(char c);
	int i=0,j=0,l=0,max=0,min=0,jmax=0,jmin=0;
	char *p;
	char a[100];
	char b[100][30];
	gets(a);

	p=a;
	while(*p)
	{
		while(*p!='\0'&&check(*p))
			p++;

		if(*p=='\0') break;
		sscanf(p,"%[A-Z'a-z]",b[i]);
		p+=strlen(b[i]);
		i++;
	}
	max=strlen(b[0]);
	min=strlen(b[0]);
	for(j=0;j<i;j++)
	{
		l=strlen(b[j]);
		if(l>max) {max=l;jmax=j;}
		else if(l<min) {min=l;jmin=j;}
	}

	printf("%s\n%s\n",b[jmax],b[jmin]);
}


int main()
{
  char a[100][100];
  scanf("%s",a[0]);
  int i,j=0,k;
  for(i=1;getchar()==' ';i++)
  scanf("%s",a[i]);
  char (*max)[],(*min)[];
  max=&a[0];
  min=&a[0];
  for(j=1;j<i;j++)
  {
       if(strlen(*max)<strlen(a[j]))
         max=&a[j];
       if(strlen(*min)>strlen(a[j]))
         min=&a[j];
  }
  puts(*max);
  puts(*min);

  return 0;
}


int main()
{
	char words[2001];
	int start,end,max,min,i,len,zmax,zmin,maxstart,minstart;
	zmax=0;
	zmin=100;
	gets(words);
	len=strlen(words);
	for(i=0;i<len;i++)
	{
		while(words[i]==' ') i++;
		start=i;
		while(words[i]!='\0'&&words[i]!=' ') i++;
		end=i;
		max=end-start;
		min=end-start;
		if(max>zmax)
		{
			zmax=max;
			maxstart=start;
		}
		if(min<zmin)
		{
			zmin=min;
			minstart=start;
		}
	}
	while(words[maxstart]!='\0'&&words[maxstart]!=' ')
	{
		printf("%c",words[maxstart]);
		maxstart++;
	}
	printf("\n");
	while(words[minstart]!='\0'&&words[minstart]!=' ')
	{
		printf("%c",words[minstart]);
		minstart++;
	}
	printf("\n");
	return 0;
}


int main()
{
	char sen[5000],sz[50][100];
	int i,j,k,n;
	int  max=0,min=0;
	gets(sen);
	n=strlen(sen);
	for(i=0,k=0;i<n;i++){
		for(j=0;sen[i]!=' '&&i<n;i++,j++){
			sz[k][j]=sen[i];
		}
		sz[k][j]='\0';
		k++;
	}

	for(i=0;i<k;i++){
		if(strlen(sz[i])>strlen(sz[max])){
			max=i;
		}
		if(strlen(sz[i])<strlen(sz[min])){
			min=i;
		}
	}
	printf("%s\n%s\n",sz[max],sz[min]);
	return 0;
}


int main()
{
	char h;
	char s[200][100];
	int i=0,j=0,geshu;
	int max,min,b=0,a=0;
	int length[1000];
	scanf("%c",&h);
	while(h!='\n'){
		s[i][j]=h;
		if(h==' '){
			s[i][j]='\0';
			i++;
			j=-1;
		}
		j++;
		scanf("%c",&h);
	}
	s[i][j]='\0';
	geshu=i+1;

	for(i=0;i<geshu;i++){
		length[i]=strlen(s[i]);
	}

	max=length[0];
	for(i=1;i<geshu;i++){
		if(length[i]>max){
			max=length[i];
			a=i;
		}
	}
	printf("%s\n",s[a]);

	min=length[0];
	for(i=1;i<geshu;i++){
		if(length[i]<min){
			min=length[i];
			b=i;
		}
	}
	printf("%s\n",s[b]);

	return 0;
}


int main()
{
    int strNnum=0,strMnum=0,max,min,maxstr=0,minstr=0,i,len;
    char string[50][20],ch;
    while((ch=getchar())!='\n')
	{
     if(strMnum!=0&&(ch==' '))
	 {
       string[strNnum][strMnum]='\0';
       strNnum++;strMnum=0;
	 }
     else
      if(ch!=' ')
	  {
        string[strNnum][strMnum]=ch;
        strMnum++;
	  }
	}
    string[strNnum][strMnum]='\0';

    max=min=strlen(string[0]);
    for(i=1;i<=strNnum;i++)
	{
      len=strlen(string[i]);
      if(len>max)
	  {
		  maxstr=i;
		  max=len;
	  }
      if(len<min)
	  {
		  minstr=i;
	      min=len;
	  }
	}
    printf("%s\n%s\n",string[maxstr],string[minstr]);
    return 0;
}


void main()
{
	int n,i,j,l;
	char a[100],max[100],min[100];
	scanf("%d",&n);
	scanf("%s", a);
	int minl=strlen(a),maxl=strlen(a);
	l=strlen(a);
	for(i=0;i<l;i++)
	{
		max[i]=a[i];
		min[i]=a[i];
	}
	for(i=1;i<n;i++)
	{
		scanf("%s", a);
		l=strlen(a);
		if(l>maxl)
		{
			for(j=0;j<l;j++)
			{
				max[j]=a[j];
			}
			maxl=l;
		}
		if(l<minl)
		{
			for(j=0;j<l;j++)
			{
				min[j]=a[j];
			}
			minl=l;
		}
	}
	max[maxl] = '\0';
	for(i=0;i<maxl;i++)	printf("%c",max[i]);
	printf("\n");
	min[minl] = '\0';
	for(i=0;i<minl;i++)	printf("%c",min[i]);
}


int main()
{
    char sth[N],*p=0,*min=0,*max=0;
    int flag=0,sum=0,sum_max=0,sum_min=N;
    gets(sth);
    for(p=sth;p<=sth+strlen(sth);p++){
        if(*p==' '||*p=='\0'){
            if(flag==0)
            continue;
           if(sum>sum_max){
               max=p-sum;
               sum_max=sum;
           }
           if(sum<sum_min){
               min=p-sum;
               sum_min=sum;
           }
           sum=0;
           flag=0;
       }
       else {
           sum++;
           flag=1;
       }
   }
   for(p=max;p<max+sum_max;p++)printf("%c",*p);
   printf("\n");
   for(p=min;p<min+sum_min;p++)printf("%c",*p);
   printf("\n");
   getchar();
   getchar();
return 0;
}


int main()
{
	char cha[200][50],te[200][50];
	int e,num[200],a=0,b,c,d,temp;
	while(~scanf("%s",cha[a]))
	{
		a++;
	}
	for(b=0;b<a;b++)
	{
		num[b]=strlen(cha[b]);
	}
	for(c=0;c<a;c++)
	{
		for(d=0;d<a-c-1;d++)
		{
		      if(num[d]>num[d+1])
            {temp=num[d+1];
			num[d+1]=num[d];
			num[d]=temp;
			strcpy(te[d],cha[d]);
			strcpy(cha[d],cha[d+1]);
			strcpy(cha[d+1],te[d]);}
		}
	}
	for(e=a-1;e>=0;e--)
	if (num[e]!=num[e-1])
	{printf("%s\n%s",cha[e],cha[0]);
	break;}
	return 0;
}


int main ()
{
	char str[200], *p, *q, *max_index, *min_index;
	int max=0, min=100000, len;
	gets (str);
	for (p=q=str; ; )
	{
		if (*q==' '|| *q=='\0')
		{
			len=q-p;
			if (len>max)
				max=len, max_index=p;
			if (len<min)
				min=len, min_index=p;
			if (*q=='\0') break;
			q=p=q+1;
		}
		else q++;
	}
	for (; *max_index!=' '&& *max_index; max_index++)
		printf ("%c", *max_index);
	printf ("\n");
	for (; *min_index!=' '&& *min_index; min_index++)
		printf ("%c", *min_index);
	printf ("\n");
	return 0;
}


int main()
{
	char str[100];
	int spa[100];
	int length[100];
	int i, j=0, max, min, max_i, min_i, size;
	cin.getline(str,100,'\n');
	for (i=0;str[i]!=0;i++)
	{
		if (str[i]==' ')
		{
			spa[j]=i;
			j++;
		}
	}
	size=i;
	for (i=1;i<j;i++) length[i]=spa[i]-spa[i-1]-1;
	length[0]=spa[0];
	length[j]=size-spa[j-1]-1;
	max=min=length[0];
	max_i=min_i=0;
	for (i=0;i<=j;i++)
	{
		if (length[i]>max) max=length[i], max_i=i;
		if (length[i]<min) min=length[i], min_i=i;
	}
	if (max_i==0)
	{
		for (i=0;i<spa[0];i++) cout<<str[i];
	}
	else if (max_i<j)
	{
		for (i=spa[max_i-1]+1;i<spa[max_i];i++) cout<<str[i];
	}
	else if (max_i==j)
	{
		for (i=spa[j-1]+1;i<size;i++) cout<<str[i];
	}
	cout<<endl;
	if (min_i==0)
	{
		for (i=0;i<spa[0];i++) cout<<str[i];
	}
	else if (min_i<j)
	{
		for (i=spa[min_i-1]+1;i<spa[min_i];i++) cout<<str[i];
	}
	else if (min_i==j)
	{
		for (i=spa[j-1]+1;i<size;i++) cout<<str[i];
	}
	cout<<endl;
	return 0;
}


int main()
{  int len=0,len1=0,len2=100,n,i;
   char max[30],min[30],temp[30],c;
   scanf("%d",&n);getchar();
   for(i=0;i<n;)
	  { c=getchar();
   if(c!=' '&&c!='\n') temp[len]=c,len++;
   else { temp[len]='\0';if(len>len1) {strcpy(max,temp);len1=len;}
   if(len<len2) {strcpy(min,temp);len2=len;}len=0;i++;}
   }
   puts(max);
   puts(min);
   return 0;
}


int main(int argc, char* argv[])
{
	int n,i;cin>>n;
	char temp[100],maxs[1000],mins[100];
	int maxl,minl;
	cin>>maxs;
	for(i=0;i<100;i++) mins[i]=maxs[i];
	maxl=minl=strlen(maxs);

	for(i=1;i<n;i++)
	{
		cin>>temp;
		int t=strlen(temp);
		if(t>maxl)
		{
			maxl=t;
			for(int j=0;j<=maxl;j++)
			{
				maxs[j]=temp[j];
			}
		}

		if(t<minl)
		{
			minl=t;
			for(int j=0;j<=minl;j++)
			{
				mins[j]=temp[j];
			}

		}
	}

	cout<<maxs<<endl<<mins<<endl;

	return 0;
}


void main()
{
	int n,i,g[100],max=0,min=0;
	char c[100][500],c1[50],c2[50];

	for(i=0;;i++)
	{
		if(scanf("%s",c[i])==EOF) break;
		g[i]=strlen(c[i]);
	}
	n=i;
	max=g[0];
	strcpy(c1,c[0]);
	for(i=0;i<n;i++)
	{
		if(g[i]>max)
		{max=g[i];strcpy(c1,c[i]);}
		else continue;
	}
	min=g[0];
	strcpy(c2,c[0]);
	for(i=0;i<n;i++)
	{
		if(g[i]<min)
		{min=g[i];
		strcpy(c2,c[i]);}
		else continue;
	}
	printf("%s\n%s\n",c1,c2);
}


int main()
{
	char a[5000]={'\0'};
	int lest=0,sest=100,l=0,i,pl,ps;
	gets(a);
	a[strlen(a)]=' ';
	for(i=0;i<strlen(a);i++)
	{
		if(a[i]!=' ')
			l++;
		else
		{
			if(l>lest)
			{
				lest=l;
				pl=i-l;
			}
			if(l<sest)
			{
				sest=l;
				ps=i-l;
			}
			l=0;
		}
	}
	for(i=pl;i<pl+lest;i++)
		printf("%c",a[i]);
	printf("\n");
	for(i=ps;i<ps+sest;i++)
		printf("%c",a[i]);
	return 0;
}


void main()
{
  char b[50][100];
  int l,ma,max,mi,min,i=1;
  scanf("%s",b[0]);
  ma=mi=strlen(b[0]);
  max=min=0;

	while(scanf("%s",b[i])==1)
	{
		l=strlen(b[i]);

		if(ma<l)
		{
			ma=l;
			max=i;
		}
		else if(l<mi)
		{
			mi=l;
			min=i;
		}
		i++;
	}
	printf("%s\n%s",b[max],b[min]);
}


void main()
{
	char str[1000],a[200][20];
	int b,c,d,e,f,g,h,i,j,k=0,l,m,n,lda=0,lxiao=50,ld,lx;
	gets(str);
	l=strlen(str);
	for(i=0;i<l;i++)
	{
		if(str[i]==',' || str[i]==' ') str[i]='\0';
	}
	for(i=0;i<=l;i++)
	{
		if(str[i]=='\0') i++;
		for(j=i;;j++)
		{
			a[k][j-i]=str[j];
			if(str[j]=='\0') break;
		}
		k++;
		i=j;
	}
	for(i=0;i<k;i++)
	{	if(strlen(a[i])>lda) {ld=i;lda=strlen(a[i]);}
	    if(strlen(a[i])<lxiao) {lx=i;lxiao=strlen(a[i]);}
	}
	puts(a[ld]);
	puts(a[lx]);
}


int main()
{
    char word[1000]="";
    int num[1000]={0};
    char word1[50][100];
    gets(word);
    int i,count=0,flag=0,max=0,min=100,j,flag1=0,flag2=0;
    for(i=0;i<=strlen(word);i++)
    {
                               if(word[i]!=' '&&word[i]!='\0')
                               {
                                             count++;
                                             word1[flag1][flag2]=word[i];
                                             flag2++;
                               }
                               else
                               {

                                    if(count>max)
                                    max=count;//printf("%d\n",max);
                                    if(count<min)
                                    min=count;
                                    count=0;
                                    flag1++;
                                    flag2=0;
                               }
    }
    //printf("%d",max);
    //getchar();getchar();
    //return 0;
    count=0;
    for(i=0;i<flag1+1;i++)
    {
                        if(max==strlen(word1[i]))
                        {
                                                 printf("%s\n",word1[i]);
                                                 break;
                        }
    }
    for(i=0;i<flag1+1;i++)
    {
                        if(min==strlen(word1[i]))
                        {
                                                 printf("%s",word1[i]);
                                                 break;
                        }
    }
    getchar();getchar();
    return 0;
}


int main()
{
    char words[2000];
    int i, j;
    int max, min, indexmax, indexmin, temp, dis, len;
    gets(words);
    len = strlen(words);
    max = -1;
    min = 5000;

    for (i=0; i<len; i++) {
        while (words[i] == ' ') i++; // ???????????
        temp = i;                    // ????????
        while (words[i] != '\0' && words[i] != ' ') i++; // ??????
        dis = i - temp;
        if (dis > max) {
            max = dis;
            indexmax = temp;
        }
        if (dis < min) {
            min = dis;
            indexmin = temp;
        }
    }

    // ???????for??????
    while (words[indexmax] != '\0' && words[indexmax] != ' ')
        printf("%c", words[indexmax++]);
    printf("\n");
    while (words[indexmin] != '\0' && words[indexmin] != ' ')
        printf("%c", words[indexmin++]);
    printf("\n");
    return 0;
}