semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char zfc[10000],*pz;
	gets(zfc);
	pz=zfc;
	int cd[100]={0};
	int i;
	for(i=0;*pz!='\0';i++)
	{
		while(*pz!=32&&*pz!='\0')
		{
			cd[i]++;
			pz++;
		}
		if(*pz!='\0')
		{
			pz++;
		}
	}
	int t=i;
	int max=0,min=0;
	for(i=0;i<t;i++)
	{
		if (cd[i]>cd[max])
		{
			max=i;
		}
	}
	for(i=0;i<t;i++)
	{
		if(cd[i]<cd[min])
		{
			min=i;
		}
	}
	int sum[100]={0};
	int j;
    for(i=0;i<t;i++)
	{
		for(j=0;j<=i;j++)
		{
			sum[i]=sum[i]+cd[j]+1;
		}
	}
	if (max==0)
	{
		for(i=0,pz=zfc;i<sum[0]-1;i++,pz++)
		{
			printf("%c",*pz);
		}
	}
	if (max!=0)
	{
		for(i=0,pz=zfc;i<sum[t-1];i++,pz++)
		{
			if(i>=sum[max-1]&&i<(sum[max]-1))
			{
				printf("%c",*pz);
			}
		}
	}
	printf("\n");
	if (min==0)
	{
		for(i=0,pz=zfc;i<sum[0]-1;i++,pz++)
		{
			printf("%c",*pz);
		}
	}
	if (min!=0)
	{
		for(i=0,pz=zfc;i<sum[t-1];i++,pz++)
		{
			if(i>=sum[min-1]&&i<(sum[min]-1))
			{
				printf("%c",*pz);
			}
		}
	}
	return 0;
}
void main()
{
	char s[100],c[100][100];
	int a[100],e[100],b[100],k,sig=0,n,i,j,sum=0,mid,temp;
	gets(s);
	n=strlen(s);
	for(i=1,e[1]=0,k=0;i<n;i++,k++)
	{
		for(j=1;;j++,k++)
		{
			if(s[k]!=32&&s[k]!='\0')
			{	
									
				c[i][j]=s[k];
			}
			else if(s[k]==32)
			{
				a[i]=j-1;           		//?i????????/
				break;
			}
			else 
			{
				a[i]=j-1; 
          		sig=1;
				break;
			}
		}
		if(i!=1)
		e[i]=e[i-1]+a[i-1]+1;					//?i?????????s???e[i]????/
		if(sig==1)
		break;
	}
		sum=i;									//?????????sum/
	
	for(i=1;i<=sum;i++)
		b[i]=i;		
	
	for(i=1;i<sum;i++)
	{
		if(a[i]>=a[i+1])
		{
			mid=a[i];
			a[i]=a[i+1];
			a[i+1]=mid;
			temp=b[i];
			b[i]=b[i+1];
			b[i+1]=temp;
		}
	}
	i=b[sum];
	for(k=e[i];k<=e[i]+a[sum]-1;k++)
		{
			printf("%c",s[k]);
		}
	printf("\n");
	for(i=sum;i>0;i--)
	{
		if(a[i]<a[i-1])
		{
			mid=a[i];
			a[i]=a[i-1];
			a[i-1]=mid;
			temp=b[i];
			b[i]=b[i-1];
			b[i-1]=temp;
		}
	}
	i=b[1];
	k=e[i];
	printf("%c",s[k]);
	for(k=e[i]+1;k<=e[i]+a[1]-1;k++)
		{
			printf("%c",s[k]);
		}
	
		
}
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;
}
int main ()
{
	char word[200][20]={'\0'};
	int len[200];
	int i,j,v=0,max,min;
	char c;
	for(i=0,j=0;(c=getchar())!='\n';)
	{
		if(c==' '||c==',')
		{
			if(v==1)
			{
				len[i]=j;
				i++;
				j=0;
				v=0;
			}
		}
		else
		{
			v=1;
			word[i][j]=c;
			j++;
		}
	}
	len[i]=j;
	max=len[0];
	min=len[0];
	for(i=0;word[i][0]!='\0';i++)
	{
		if(len[i]>max)
			max=len[i];
		if(len[i]<min)
			min=len[i];
	}
	for(i=0;word[i][0]!='\0';i++)
	{
		if(len[i]==max)
		{	printf("%s\n",word[i]);
		break;}
	}

	for(i=0;word[i][0]!='\0';i++)
	{
		if(len[i]==min)
		{	printf("%s\n",word[i]);
		break;}
	}

	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;
		}
	}
}
int main ()
{
	char a[10000],b[50][100];
	int c[50],m,n;
	int i=0,j=0,p=0;
	gets(a);
	m=strlen(a);
	for(;i<m;i++,p++)
	{
		b[j][p]=a[i];
		c[j]++;
		if(a[i]==' ')
		{
			b[j][p]='\0';
			c[j]--;
			j++;
			p=-1;
		}
	}
	b[j][p+1]='\0';
	m=n=c[0];
	for(i=1;i<=j;i++)
	{
		if(m<c[i])  m=c[i];
		if(n>c[i])  n=c[i];
	}
	for(i=0;i<=j;i++)
		if(c[i]==m) break;
		printf("%s\n",b[i]);
	for(i=0;i<=j;i++)
		if(c[i]==n) break;
		printf("%s\n",b[i]);
        return 0;
}
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 a[1000]={'\0'},b[1000]={'\0'},c[1000]={'\0'},d[1000]={'\0'};
	int i,j,k,s,l,max=1,min=1000;
	gets(a);
	s=strlen(a);
	b[0]=' ';
	for (i=1;i<=s;i++)
		b[i]=a[i-1];
	b[s+1]=' ';
	l=strlen(b);
	for (i=0;i<l;i++)
	{
		if (b[i]==' ')
		{
		for (j=i+1;j<l;j++)
			if (b[j]==' ')
			{
				if (j-i-1>max) 
				{
					max=j-i-1;
		    		for (k=0;k<max;k++)
			    		c[k]=b[k+i+1];
					if (max>min) break;
				}
	            if (j-i-1<min)
				{
					min=j-i-1;
					for (k=0;k<1000;k++)
						d[k]='\0';
					for (k=0;k<min;k++)
						d[k]=b[k+i+1];
					break;
				}
				if (j-i-1<=max||j-i-1>=min)
					break;
			}
		}
	}
	for (i=0;i<max;i++)
		printf("%c",c[i]);
	printf("\n");
    for (i=0;i<min;i++)
		printf("%c",d[i]);
	return 0;
}
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 main()
{
	int max=0,min=100,i,j,m,n,word=0;
	char a[5000],c,maxw[20],minw[20];
	gets(a);
	for(i=0;(c=a[i])!='\0';i++){
		if(a[i]!=' '&&a[i]!=','){
			word++;}
		else if((a[i]==' '||a[i]==',')&&(a[i+1]==' '||a[i+1]==',')){
			i++;}
		else{
			if(word>max){
			max=word;
			m=i;}
		if(word<min){
			min=word;
			n=i;}
		word=0;}
	}if(word>max){
		max=word;
		m=i;}
	if(word<min){
		min=word;
		n=i;}
		for(i=(m-max);i<m;i++){
		printf("%c",a[i]);}
	printf("\n");
	for(j=(n-min);j<n;j++){
		printf("%c",a[j]);}
	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(){
	char a[999],z[200][55];
	int i,j=0,l=0,m,n[200],w;
	gets(a);
	for(i=0;1;i++){
		if(a[i]=='\0'){
		z[j][l]='!';
		w=j;
		break;
		}
		if(a[i]==' '){
		z[j][l]='!';
		j++;
		l=0;
		}
		else{
			z[j][l]=a[i];
			l++;
		}
	}
	l=0;
	for(j=0;j<=w;j++){
		n[l]=0;
		for(i=0;1;i++){
			if(z[j][i]=='!'){
			break;
			}
			n[l]++;
	}
		l++;
	}
	m=0;
	w=0;
	for(i=1;i<l;i++){
		if(n[m]>n[i]){
		m=i;
		}
	if(n[w]<n[i]){
		w=i;
		
		}
	}
	for(i=0;z[w][i]!='!';i++){
	printf("%c",z[w][i]);
	}
	printf("\n");
	for(i=0;z[m][i]!='!';i++){
	printf("%c",z[m][i]);
	}

return 0;}
int main()
{
	int m=0, n=0, l=10, t, i, j, k;
	char str[200];
	cin.getline(str,200);
	k = strlen(str);
	for ( i = 0 ; i < k ; i++ )
	{
		if ( str[i] != ' ' )
			m++;
		else
		{
			if ( m > n)
			{
				n=m;
				t=i;
			}
			m = 0;
		}
	}
	m = 0;
	for ( j = k - 1 ; j >=0 ; j--)
	{
		if( str[j] != ' ')
			m++;
		else
			break;
	}
	if ( m > n )
	{
		n = m;
		t = k;
	}
	for ( i = t-n ; i < t ; i++ )
		cout << str[i] ;
	cout << endl;
	m = 0;
	for ( i = 0 ; i < k ; i++ )
	{
		if( str[i] != ' ' ) 
			m++;
		else
		{
			if (( m < l) && ( m != 0 ))
			{
				l=m;
				t=i;
			}
			m=0;
		}
	}
	if ( m < l )
	{
		for ( j = k - m ; j < k ;  j++ )
			cout << str[j];
	}
	else
	{
		for ( i = t-l; i < t ; i++ )
			cout << str[i] ;
	}
	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[1000]="                                                                                                                                                                                                                                                                          ";
	int b[200]={0},c[200]={0},i,j=0,d=0,e=100;
	gets(a);
	for(i=0;a[i]!='\0';i++)
	{
		if(a[i]!=' '&&a[i]!=',')
		{
			b[j]+=1;
		}
		else
		{
			j+=1;
			c[j]=i;
		}
	}
	for(j=0;j<200;j++)
	{
		if(b[j]>d)
		{
			d=b[j];
		}
		if(b[j]<e&&b[j]!=0)
		{
			e=b[j];
		}
	}
	for(j=0;j<200;j++)
	{
		if(b[j]==d)
		{
			if(c[j]==0)
			{
				for(i=c[j];i<c[j]+d-1;i++)
			{
				printf("%c",a[i]);
			}
			printf("%c\n",a[c[j]+d-1]);
			}
			else
			{

			for(i=c[j]+1;i<c[j]+d;i++)
			{
				printf("%c",a[i]);
			}
			printf("%c\n",a[c[j]+d]);
			}
			break;
		}
	}
	for(j=0;j<200;j++)
	{
		if(b[j]==e)
		{
			if(c[j]==0)
			{
				for(i=c[j];i<c[j]+e-1;i++)
			{
				printf("%c",a[i]);
			}
			printf("%c\n",a[c[j]+e-1]);
			}
			else
			{
		
		
			for(i=c[j]+1;i<c[j]+e;i++)
			{
				printf("%c",a[i]);
			}
			printf("%c\n",a[c[j]+e]);
		}
			break;
	}
		}
	
	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;
}
main()
{
char word[200][20],sen[1000];
int n,i,j,len[200],t,max,min,p1,p2;
i=1;
gets(sen);
t=strlen(sen);
n=1;

j=1;
for (i=0;i<=t-1;i++)
  {
if (sen[i]!=' '&&sen[i]!=',') {word[n][j]=sen[i];j++;}
if (sen[i]==' '||sen[i]==',') {len[n]=j-1;n++;j=1;}
if (sen[i]==',') i++;
if (i==t-1) len[n]=j-1;
  }
max=0;
min=50000;


for (i=1;i<=n;i++)
  {if (len[i]>max) {max=len[i];p1=i;}
  if (len[i]<min) {min=len[i];p2=i;}
  }
if (max==min) {for (i=1;i<=len[1];i++) printf("%c",word[1][i]);printf("\n");for (i=1;i<=len[1];i++) printf("%c",word[1][i]);}
 else {for (i=1;i<=len[p1];i++) printf("%c",word[p1][i]);
          printf("\n");
         for (i=1;i<=len[p2];i++) printf("%c",word[p2][i]);}
}
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 zfc[5000];
	char words[200][50];
	int k[200];
	gets(zfc);
	int len=strlen(zfc);
	int i,j,w=0;
	for(i=0;i<len;i++)
	{
		if(zfc[i]!=' '&&zfc[i]!=',')
		{
			for(j=i;zfc[j]!=' '&&zfc[i]!=','&&j<len;j++)
			{
				words[w][j-i]=zfc[j];
			}
			words[w][j-i]='\0';
			w++;
			i=j;
		}
	}
//	for(i=0;i<w;i++)
//	{
//		printf("%s\n",words[i]);
//	}
	for(i=0;i<w;i++)
	{
		k[i]=strlen(words[i]);
	}
//	int e;
//    for(int x=1;x<w;x++)
//	{
//		for(i=0;i<w-x;i++)
//		{
//			if(k[i] > k[i+1])
//			{
//				e = k[i+1];
//				k[i+1] = k[i];
//				k[i] = e;
//			}
//		}
//	}
	int min=k[0],p=0;
	for(i=1;i<w;i++)
	{
		if(k[i]<min)
		{
			min=k[i];
			p=i;
		}
	}
	int max=k[0],q=0;
	for(i=1;i<w;i++)
	{
		if(k[i]>max)
		{
			max=k[i];
			q=i;
		}
	}
	printf("%s\n",words[q]);
	printf("%s\n",words[p]);




	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 a[51][20];
	int b[51]={0};
	int n=0;
	char *p;
	while(scanf("%s",a[n])!=EOF)
		n++;
	int i;
	for(i=0;i<n;i++)
	{
		p=a[i];
		while(*p!='\0')
		{
			b[i]++;
			(p)++;
		}
	}
	int m=b[0],index=0;
	for(i=1;i<n;i++)
		if(b[i]>m)
		{
			m=b[i];
			index=i;
		}
	printf("%s\n\n",a[index]);
	m=b[0];index=0;
	for(i=1;i<n;i++)
		if(b[i]<m)
		{
			m=b[i];
			index=i;
		}
	printf("%s",a[index]);
	return 0;
}
void main()
{
	char s[500],c,*max,*min,*p;
	int i,word=0,lmax=0,lmin=100,a;
	gets(s);
	for(i=0;(c=s[i])!='\0';i++)
	{
		if(c!=' ')
		{
			if(word==0)
			{
		    	a=1;
				p=s+i;
			    word=1;
			}
			else a++;
		}
		if(c==' '||s[i+1]=='\0') 
		{
			if(word==1)
			{
			   if(a>lmax) 
			   {
			    	max=p;
			    	lmax=a;
			   }
			   if(a<lmin) 
			   {
			    	min=p;
				    lmin=a;
			   }
			}
			word=0;
		}
	}
	while(*max!=' '&&*max!='\0')
		putchar(*(max++));
	putchar('\n');
	while(*min!=' '&&*min!='\0')
		putchar(*(min++));
}
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;
}