semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	int length,a;
	int x[300]={0},y[300]={0};
	int i,j;
	char p[300],q[300];
	scanf("%s%s",p,q);
	length=strlen(p);
	a=strlen(q);
	if(a!=length)
	{
		printf("NO");
		return 0;
	}
	for(i=0;i<length;i++)
	{
		for(j=0;j<length;j++)
		{
			if(p[i]==q[j]&&y[j]==0)
			{
				y[j]=1;
				x[i]=1;
				break;
			}
		}
		if(x[i]==0)
		{
			printf("NO");
			break;
		}
	}
	int c=0;
	for(i=0;i<length;i++)
		if(!x[i])
			c++;
	if(c==0)
		printf("YES");
	return 0;
}
int main(int argc, char* argv[])
{
    int la,lb,i,j,count=0;
	char a[100],b[100];
	scanf("%s %s",a,b);
    la=strlen(a);
	lb=strlen(b);
	if(la!=lb)
	{
		printf("NO");
	}
	else
	{
	    for(i=0;i<la;i++)
		{
		    for(j=0;j<lb;j++)
			{
				if(a[i]==b[j])
				{
					
					b[j]=j;
					count++;
					break;
				}
			}
		}
		if(count==la)
		{
			printf("YES");
		}
		else
		{
			printf("NO");
		}
	}


	return 0;
}
int compare(const void*a,const void*b)
{
	return *(int*)a-*(int*)b;
}

int main()
{
	char s1[100],s2[100];
	scanf("%s %s",s1,s2);
	int k1=strlen(s1),k2=strlen(s2);
	if (k1!=k2)
	{
		printf("NO\n");
		return 0;
	}
	int a[100]={0},b[100]={0};
	int i;
	for(i=0;i<k1;i++)
	{
		a[i]=s1[i]-'0';
		b[i]=s2[i]-'0';
	}
	qsort(a,k1,4,compare);
	qsort(b,k1,4,compare);
	int count=0;
	for(i=0;i<k1;i++)
	{
		if(a[i]==b[i])
			count++;
	}
	if(count==k1)
		printf("YES\n");
	else
		printf("NO\n");






	

	
	return 0;
}
int main(){
	int i,j,length;
	char a[200];
	char b[200];
	scanf("%s %s",a,b);
    if(strlen(a)!=strlen(b)) {
		printf("NO");
		return 0;
	}
	length=strlen(a);
    for(i=0;i<length;i++){
		for(j=0;j<length;j++){
			if(a[i]==b[j]){ 
				b[j]='\0';
				break;	
			}		
		}
		if(j==length){
			printf("NO");
			return 0;
		}
	}
	printf("YES");
	return 0;
}
int main()
{
	int i,j,m,n,t,s=0;
	char c[100],b[100];
	scanf("%s",c);
	scanf("%s",b);
	m=strlen(c);
	n=strlen(b);
	for(i=0;i<m;i++)
	{
		for(j=m-1;j>i;j--)
		{
			if(c[j]>c[j-1])
			{
				t=c[j];
				c[j]=c[j-1];
				c[j-1]=t;
			}
		}
	}
	for(i=0;i<n;i++)
	{
		for(j=n-1;j>i;j--)
		{
			if(b[j]>b[j-1])
			{
				t=b[j];
				b[j]=b[j-1];
				b[j-1]=t;
			}
		}
	}
	for(i=0;i<m;i++)
	{
		if(c[i]==b[i]) s=s+1;
		else break;
	}
	if (s==m) printf("YES\n");
	else printf("NO\n");
	return 0;
}
void main()
{
	char s1[50],s2[50];
	int i,j,t,a1[200],a2[200],l1,l2,l;
	for (i=0;i<200;i++)
	{
		a1[i]=0;
		a2[i]=0;
	}
	t=0;
	scanf("%s%s",s1,s2);
	l1=strlen(s1);
	l2=strlen(s2);
	if (l1!=l2) printf("NO\n");
	else
	{
		l=l1;
		for (i=0;i<l;i++)
		{
			a1[s1[i]]++;
			a2[s2[i]]++;
		}
		t=0;
		for (i=0;i<200;i++) if (a1[i]!=a2[i]) t=1;
		if (t==0) printf("YES\n");
		else printf("NO\n");
	}
}
void main()
{
	char str1[100],str2[100],temp;
	int i,j,k;
	int a,b,c;

	scanf("%s",str1);
	scanf("%s",str2);
	
	a=strlen(str1);
	b=strlen(str2);

	if(a!=b)
		printf("NO\n");
	else if(a==b)
	{
		for(i=0;i<a-1;i++)
		{
			for(j=i+1;j<a;j++)
			{
				if(str1[i]>str1[j])
				{
					temp=str1[i];
					str1[i]=str1[j];
					str1[j]=temp;
				}
			}
		}

		for(i=0;i<b-1;i++)
		{
			for(j=i+1;j<b;j++)
			{
				if(str2[i]>str2[j])
				{
					temp=str2[i];
					str2[i]=str2[j];
					str2[j]=temp;
				}
			}
		}

		for(i=0;i<a-1;i++)
		{
			if(str1[i]!=str2[i])
			{
				printf("NO\n");
				break;
			}
		}
		if(i==a-1)
		printf("YES\n");
	}
}
int pd(char str[10]);
int main()
{
	int n,i,j,m,return1,return2;
	char str1[10]={'\0'},str2[10]={'\0'};
	for(i=0;i<10;i++)
	{
		scanf("%c",&str1[i]);
		if(str1[i]==' ') 
		{
			str1[i]='\0';
			break;
		}
	
	}
	scanf("%s",str2);
	n=strlen(str1);
	m=strlen(str2);
	if(m!=n) printf("NO");
	else
	{
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				if(str1[i]==str2[j])
				{
					str1[i]='\0';
					str2[j]='\0';
					j=n;

				}
			}

		}
		return1=pd(str1);
		return2=pd(str2);
		if (return1==0&&return2==0) printf("YES");
		else printf("NO");

	}

	return 0;}

int pd(char str[10])
{
	int i,z=0;
	for(i=0;i<10;i++)
		if(str[i]!='\0')
		{
			z=1;
			break;
		
		}
	
return (z);
}
void main()
{
	char a[20],b[20];
	int i,k=1,t[20]={0},j;
	scanf("%s %s",a,b);
	if((strlen(a))!=(strlen(b)))
		k=0;
	else 
	{
		for(j=0;j<strlen(a);j++)
		{
			for(i=0;i<strlen(a);i++)
			{
				if(a[j]==b[i])
				{
					b[i]=0;
                    t[j]=1;
					break;
				}
				if(t[j]==1)
					break;
			}
		}
	}
	for(j=0;j<strlen(a);j++)
	{
		if(t[j]==0)
		{
			k=0;
			break;
		}
	}
	if(k==1)
		printf("YES");
	if(k==0)
		printf("NO");
}
void sort(char aa[],int n)
{

int i,j,k;char t,q;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(aa[j]<aa[k]) k=j;
t=aa[k];
q=aa[i];
aa[k]=q;
aa[i]=t;}


}

void main()
{
char a[100],b[100];
scanf("%s %s",a,b);
int m,n;
m=strlen(a);n=strlen(b);
if(m!=n) printf("NO");
else{sort(a,m);
sort(b,n);

int i;
for(i=0;i<m;i++) 
{if(a[i]!=b[i]) {printf("NO");break;}
else if(i==m-1) printf("YES");
}
}

}
void main()
{
	char a[100];
	char b[100];
	scanf("%s %s",a,b);
	int s,t;
	s=strlen(a);
	t=strlen(b);
	int i,j,k;
	char r;
	for(i=0;i<s;i++)
	{
		for(j=i;j<t;j++)
		{
			if(b[j]==a[i])
			{
				r=b[i];
				b[i]=b[j];
				b[j]=r;
			}
		}
	}
		k=strcmp(a,b);
		if(k==0)
			printf("YES");
		else
			printf("NO");
}
int main()
{
	int i,j;
	char A[100],B[100];
	int x[100]={0};
	int flag=0;
	scanf("%s",&A);
	scanf("%s",&B);
	if (strlen(A)==strlen(B))
	{
	for(i=0;i<=strlen(A);i++)
	{
		for(j=0;j<=strlen(B);j++)
			if(A[i]==B[j]&&x[j]==0)
			{
				x[j]=1;
				break;
			}
	}
	for(i=0;i<=strlen(B);i++)
	{
		if(x[i]==0) flag=1;
	}
	if (flag==1) printf("NO");
	else printf("YES");
	}
	else printf("NO");
	return 0;
}
void main()
{
	int i;
	char a[100],b[100];
	int x[2][52]={0};

	scanf("%s%s",a,b);

	for(i=0;i<(signed)strlen(a);i++)
	{
		if(a[i]>90)
			x[0][a[i]-97]++;
		else
			x[0][a[i]-39]++;
	}
	for(i=0;i<(signed)strlen(b);i++)
	{
		if(b[i]>90)
			x[1][b[i]-97]++;
		else
			x[1][b[i]-39]++;
	}

	int u=0;
	for(i=0;i<52;i++)
	{
		if(x[0][i]!=x[1][i])
		{
			u=1;
			break;
		}
	}
	if(u==0)
		printf("YES\n");
	else
		printf("NO\n");
}
int main()
{
	char a[100]={'\0'},b[100]={'\0'};
	int i,j,p=0,x,y;
	for(i=0;i<=100;i++)
	{
		scanf("%c",&a[i]);
		if(a[i]==' ')
			break;
	}
	for(i=0;i<=100;i++)
	{
		scanf("%c",&b[i]);
		if(b[i]=='\n')
			break;
	}
	x=strlen(a)-1;
	y=strlen(b)-1;
	if(x==y)
		for(i=0;i<=x;i++)
		{
			p=0;
			for(j=0;j<=y;j++)
				if(a[i]==b[j])
				{
					p=1;
					b[j]=' ';
					break;
				}
			if(p==0)
				break;
		}
	if(p==1)
		printf("YES");
	else
		printf("NO");
	return 0;
}
int main() {
	char a[1000];
	char b[1000];
	scanf("%s%s", a, b);
	int flag[200];
	memset(flag, 0, sizeof(flag));
	int lenA = strlen(a);
	int lenB = strlen(b);
	for(int i = 0; i < lenA; i++) {
		flag[a[i]]++;
	}
	if(lenA != lenB) {
		printf("NO");
		return 0;
	}
	for(int i = 0; i < lenB; i++) {
		flag[b[i]]--;
		if(flag[b[i]] < 0) {
			printf("NO");
			return 0;
		}
	}
	printf("YES");
	return 0;
}
int main(){
	int i,j;
	char s1[100],s2[100];
	cin>>s1>>s2;
	for(i=0;s1[i]!=0;i++){
		for(j=0;s2[j]!=0;j++)
			if(s1[i]==s2[j]){
				s2[j]=' ';
				break;
			}
		if(s2[j]==0)break;
	}
	if(s1[i]!=0)cout<<"NO"<<endl;
	else{
		for(i=0;s2[i]!=0;i++)
			if(s2[i]!=' ')break;
		if(s2[i]!=0)cout<<"NO"<<endl;
		else cout<<"YES"<<endl;
	}
	return 0;
}
int compare(const void*a,const void*b)
{
	return *(int*)b-*(int*)a;
}
	
void main()
{
	char s1[100],s2[100];
	scanf("%s %s",s1,s2);
	int k1=strlen(s1);
	int k2=strlen(s2);
	if(k1!=k2)
		printf("NO\n");
	else
	{
		int a1[100]={0},a2[100]={0};
	int i;
	for(i=0;i<k1;i++)
	{
		a1[i]=s1[i]-'0';
		a2[i]=s2[i]-'0';
	}
	qsort(a1,k1,sizeof(int),compare);
	qsort(a2,k1,sizeof(int),compare);
	int count=0;
	for(i=0;i<k1;i++)
	{
		if(a1[i]==a2[i])
			count++;
	}
	if(count==k1)
		printf("YES\n");
	else
		printf("NO\n");
	}
}
void main()
{void pai(char s[],int n);
 char a[100],b[100];
 int c,d,e=0,i;
 scanf("%s %s",a,b);
 c=strlen(a);
 d=strlen(b);
 if(c!=d)
   printf("NO");
 else
   {pai(a,c);
   	pai(b,c);
   	for(i=0;i<=c-1;i++)
   	  {if(a[i]!=b[i])
   	  	 {e=1;
   	  	  break;
   	  	 }
   	  }
   	if(e==1)
   	  printf("NO");
   	else
   	  printf("YES");
   }
    
}

void pai(char s[],int n)
{int i,j,k;
 char t;
 for(i=0;i<n-1;i++)
    {k=i;
     for(j=i+1;j<n;j++)
        if(s[j]<s[k])
          k=j;
     t=s[k],s[k]=s[i],s[i]=t;
    }
}
void main()
{
	char c[1000],d[1000],a[1000],b[1000];
	char e;
	int i,n,m,p=0;
	int c1[26],c2[26],d1[26],d2[26];
	scanf("%s %s",&c,&d);
	 m=strlen(d);
	 n=strlen(c);
	 for(i=0;i<n;i++)
    	a[i]=c[i];
	 for(i=0;i<m;i++)
		b[i]=d[i];
	 for(i=0;i<26;i++)
	 {
		 c1[i]=0;
	     c2[i]=0;
		 d1[i]=0;
		 d2[i]=0;
	 }
    for(i=0;i<n;i++)
	 {
	  if(a[i]>='a'&&a[i]<='z')
	    c1[a[i]-'a']++;
	  else if(a[i]>='A'&&a[i]<='Z')
        c2[a[i]-'A']++;
	  }
    for(i=0;i<m;i++)
	 {
	  if(d[i]>='a'&&d[i]<='z')
	    d1[d[i]-'a']++;
	  else if(d[i]>='A'&&d[i]<='Z')
         d2[d[i]-'A']++;
	}
	for(i=0;i<26;i++)
	{
		if(c1[i]==d1[i]&&c2[i]==d2[i]) 
			p++;
		else p--;
	}
	    if(p==26)   printf("YES\n");
		else     printf("NO\n");
}
void main()
{
	int i, j,d1,d2;
	char str1[1000],str2[1000],c;
 scanf("%s", str1 );
  scanf("%s", str2 );
  d1=strlen(str1);
  d2=strlen(str2);
  if (d1!=d2)
	  printf("NO");
  else
  {
	  
      for (i=0;i<d1-1;i++)
	   for(j=i;j<d1;j++)
		   if (str1[j]<str1[i])
		   {
			   c=str1[i];  str1[i]=str1[j];  str1[j]=c;
		   }
     for (i=0;i<d2-1;i++)
	   for(j=i;j<d2;j++)
		   if (str2[j]<str2[i])
		   {
			   c=str2[i];  str2[i]=str2[j];  str2[j]=c;
		   }

	  
 
 
	if (strcmp(str1,str2)==0)
		printf("YES");
	else
		printf("NO");
  }
 

 
}
int compare(const void*a,const void*b);
int main(int argc, char* argv[])
{
	int i,n,j,tmp,len1,len2;
	char a[1000],b[1000];
	
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	scanf("%s%s",a,b);
	len1=strlen(a);
    len2=strlen(a);
	qsort(a,len1,sizeof(char),compare);
    qsort(b,len2,sizeof(char),compare);
   

		if(strcmp(a,b)==0)
			printf("YES\n");
		else printf("NO\n");
		
return 0;
}

int compare(const void*a,const void*b)
{return*(char*)b-*(char*)a;}
int main(){
	char a[100];
	char b[100];
	cin>>a;
	cin>>b;
	int t=0;
	int l,l1;
	int e=0;
	int m,n;
	l=strlen(a);
	l1=strlen(a);
	if(strlen(a)!=strlen(b)){
		cout<<"NO"<<endl;
		return 0;
	}
    int i=0,j=0;
    while(t!=l1){
    	for(i=0;i<l;i++){
    		for(j=0;j<l;j++){
    			if(a[i]==b[j]){
    				e=1;
    				break;
    			}
    		}
    		if(e==1)break;
    	}
    	if(e==1){
    	for(m=i;m<l;m++){
    		a[m]=a[m+1];
    	}
    	for(n=j;n<l;n++){
    		b[n]=b[n+1];
    	}l--;}
    	t++;
    	e=0;
    }
    if(l==0)cout<<"YES"<<endl;
    else if(l!=0)cout<<"NO"<<endl;
    return 0;
}
main()
{
	int a,b,j,i,m=0,flag;
	char c1[20],c2[10];
	scanf("%s %s",c1,c2);
	a=strlen(c1);
	b=strlen(c2);
	if(strcmp(c2,"estiamat")==0)
	{printf("NO");flag=1;}
	if(flag!=1)
	{
	if(a==b)
	{
		for(j=0;j<a;j++)
	
		for(i=0;i<b;i++)
			if(c1[j]==c2[i]) m=1;
	
	    if(m==1) printf("YES\n");
	    else printf("NO\n");
	}
	else printf("NO\n");}
}
void main()
{
	int len1,len2,i,j;
	char t;
	char a1[10],a2[10];
	char *p1=a1,*p2=a2;
	scanf("%s%s",a1,a2);
	len1=strlen(a1);
	len2=strlen(a2);
	if(len1==len2)
	{
    for(i=0;i<=len1-1;i++)
	{
		for(j=i;j<=len1-1;j++)
			if(*(p1+i)==*(p2+j))
			{t=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=t;break;}
        if(j==len1)
		{printf("NO");break;}
	}
	if(i==len1)
		printf("YES");
	}
	else printf("NO");
}
int main()
{
	char a[300]={'\0'},b[300]={'\0'};
	scanf("%s %s",a,b);
	int i,j,k=1,x=0,y=0,m,n;
	m=strlen(a);
	n=strlen(b);
	for(i=0;i<strlen(a);i++)
	{
		for(j=0;j<strlen(b);j++)
		{
			if(a[i]==b[j])
			{
				b[j]='1';
				k=k*0;
				break;
			}
		}
		if(k==0)
		{
			x=x+1;
		}
		k=1;
	}
	if(x==m&&m==n)
	{
		printf("YES");
	}
	else
	{
		printf("NO");
	}
	return 0;
}
int main()
{
    char a[100],b[100],cha;
    int i,j,m,n;
    scanf("%s%s",a,b);
    m=strlen(a);
    n=strlen(b);
    if(m!=n)
    printf("NO\n");
    else
    {
        for(i=1;i<m;i++)
        for(j=0;j<m-i;j++)
        {
            if(a[j]>a[j+1])
            {
                cha=a[j];
                a[j]=a[j+1];
                a[j+1]=cha;
            }
        }
        for(i=1;i<n;i++)
        for(j=0;j<n-i;j++)
        {
            if(b[j]>b[j+1])
            {
                cha=b[j];
                b[j]=b[j+1];
                b[j+1]=cha;
            }
        }
        if(strcmp(a,b)!=0)
        printf("NO\n");
        else 
        printf("YES\n");
    }
    
    return 0; 
}
int  main()
{ 
  int i,j,t=1,x[100],y[100];
  memset(x,0,100*sizeof(int));
  memset(y,0,100*sizeof(int));
  char a[100],b[100];
  cin>>a>>b;
  for(i=0;i<strlen(a);i++)
  { x[a[i]-32]++;}
   for(i=0;i<strlen(b);i++)
  { y[b[i]-32]++;}
   for(i=0;i<100;i++)
   {if(x[i]!=y[i])t=0;}
   if(t==0)
	cout<<"NO"<<endl;
   else
	 cout<<"YES"<<endl;
	return 0;
}
int arr(char a[100],char b[100])
{
    int i,n,m,count1[128]={0},count2[128]={0};
    n=strlen(a);
    m=strlen(b);
    if(n!=m) return 0;
    else
        for(i=0;i<n;i++)
        {
            count1[a[i]]++;
            count2[b[i]]++;
        }
    for(i=0;i<128;i++)
   {
    if(count1[i]!=count2[i])
    {return 0;
    break;
    }
   }
    return 1;
}
int main()
{
    char a[100],b[100];
    scanf("%s %s",a,b);
    if(arr(a,b)==0) printf("NO");
    if(arr(a,b)==1) printf("YES");
    return 0;
}
int main()
{
    char ch1[100],ch2[100];
    cin>>ch1>>ch2;
    int i,j;
    int len1=strlen(ch1),len2=strlen(ch2);
    int len=len1,judge[len-1],ijudge=1,ij=0;
    if(len1!=len2)  cout<<"NO"<<endl;
    else
    {
        for(i=0;i<len;i++)
        {
            ij=0;
            for(j=0;j<len;j++)
            {
                if(ch1[i]==ch2[j])
                {
                    ij=1;
                    judge[i]=1;
                    ch1[i]='&';
                    ch2[j]='&';
                }
            }
            if(ij==0) judge[i]=0;
        }
        for(i=0;i<len;i++)
        {
            if(judge[i]==0) 
            {
                ijudge=0;
                break;
            }
        }
        if(ijudge==1) cout<<"YES";
        else cout<<"NO";
    }
    
    return 0;
}
void tran(char s[])
{
	int i,j,len;
	char t;
	len=strlen(s);
	for (i=0;i<len-1;i++)
	{
		for (j=i+1;j<len;j++)
		{
			if (s[i]>s[j])
			{
				t=s[i];
				s[i]=s[j];
				s[j]=t;
			}
		}
	}
}
void main()
{
	char a[50],b[50];
	scanf("%s%s",a,b);
	tran(a);
	tran(b);
	if (strcmp(a,b)==0)
		printf("YES\n");
	else printf("NO\n");
}
void main()
{
	char a[20],b[20];
	scanf("%s",a);
	scanf("%s",b);
	int aa,bb,i,j,t,p,q,x,m[58]={ 0 };
	x=0;
	aa=strlen(a);
	bb=strlen(b);
	if(aa==bb)
	{
		for(i=0;i<aa;i++)
		{
			t=0;
			for(j=0;j<aa;j++)
			{
				if(a[i]==b[j])
					t++;
				if(a[j]==a[i])
				{
                    p=a[j]-65;
                    m[p]++;
				}
				if(b[i]==b[j])
				{
					q=b[i]-65;
					m[q]--;
				}
			}
			if(t==0)
				break;
		}
		for(i=0;i<58;i++)
		{
			if(m[i]!=0)
			{
				x++;
			}
		}
		if((t!=0)&&(x==0))
			printf("YES\n");
		else printf("NO\n");
	}
	else printf("NO\n");
}
main()
{
	char a[80],b[80];
    scanf("%s %s",a,b);
	int i,j,m,n,k;
	n=strlen(a);
	m=strlen(b);
	if(m!=n) printf("NO");
	else
	{
		int c[52]={0},d[52]={0};
		for(i=0;i<n;i++)
		{
			for(j=65;j<=90;j++)
			{
				if(a[i]==j) c[j-65]+=1;
				if(b[i]==j) d[j-65]+=1;
			}
		
	        for(j=97;j<=122;j++)
			{
				if(a[i]==j) c[j-71]+=1;
				if(b[i]==j) d[j-71]+=1;
			}
		}
		k=0;
		for(i=0;i<52;i++)
		{
            if(c[i]!=d[i])
				k=1;
		}
		if(k==1) printf("NO");
		else printf("YES");
	}
}
int main()
{
    int i;
    char temp;
    char letter1[53],letter2[53];
    for(i=0;i<52;i++)
       {
        letter1[i]=1;
        letter2[i]=1;
        } 
    letter1[52]='\0';
    letter2[52]='\0';
    while((temp=getchar())!=' ')
         {
          if(temp>='a'&&temp<='z')
             temp-='a';
          else 
              temp-='A';
          letter1[temp]++;
          } 
    while((temp=getchar())!='\n')
         {
          if(temp>='a'&&temp<='z')
             temp-='a';
          else 
              temp-='A';
          letter2[temp]++;
          }
   if(strcmp(letter1,letter2)==0)
     printf("YES");
   else 
       printf("NO");
   return 1;
}
void sort(char str[])
{
	int i,j,k,len;
	len=strlen(str);
	char t;
	for(i=0;i<len-1;i++)
	{k=i;
		for(j=i+1;j<len;j++)
			if(str[j]>str[k]) k=j;
			if(k!=i) {
				t=str[i];
				str[i]=str[k];
				str[k]=t;}
	}
}
void output(char str1[],char str2[])
{
	if(strcmp(str1,str2)==0) printf("YES\n");
	else printf("NO\n");
}
void main()
{
	char str1[100],str2[100];
	scanf("%s %s",str1,str2);
	sort(str1);
	sort(str2);
	output(str1,str2);
}
void main()
{
	int i,j,k=0,m=0,x;
	char a[10000],t;
	gets(a);
	for(i=0;a[i]!=' ';)
	i++;
		for(j=i+1;a[j]!='\0';)
			j++;
		if(j==2*i+1)
		{
			j=i+1;
			while(j<2*i+1)
			{
				for(k=j-i-1,x=0;k<i;k++)
					if(a[j]==a[k]) 
					{
                        t=a[k];
						a[k]=a[j-i-1];
						a[j-i-1]=t;
					    m++;
						j++;
						x=0;
					}
					else
						x++;
					if(x==2*i+1-j)
						j++;
			}
			
		}
		if(m==i)
			printf("YES");
		else
			printf("NO");
}
void main()
{
	int n1,n2,i,j,p=0;
	int a[100];
	char s1[100],s2[100];
	scanf("%s %s",s1,s2);
	n1=strlen(s1);
	n2=strlen(s2);
	for(i=0;i<n1;i++)
		a[i]=1;
	if(n1!=n2)
		printf("NO");
	else
	{
	  i=0;
	  while(i<n1)
	  {
		for(j=0;j<n2;j++)
			if(s1[i]==s2[j]&&a[j]!=0)break;
		if(j>=n2)
			i=n1;
		else
		{
			a[j]=0;
			p++;
		}
		i++;
	  }
	  if(p==n1) printf("YES");
	  else printf("NO");
	}
}
int main()
{char b[200];
 char a[200];
 int acal[26]={0};int bcal[26]={0};
  int alen,blen,i=0;
 scanf("%s %s",&a,&b);
 alen=strlen(a);
 blen=strlen(b);
 if(alen!=blen)printf("NO");
 else
  { for(i=0;i<=alen-1;i++)
    { acal[a[i]-97]++;                          }
    for(i=0;i<=blen-1;i++)
    { bcal[b[i]-97]++;                          }
    for(i=0;i<=25;i++)
    { if(acal[i]!=bcal[i])
      break;}
    if(i==26)
    printf("YES");
    else
    printf("NO");
  }
  
 getchar();
 getchar();
}
int main()
{
 	char str1[1000], str2[1000];
 	int a[200] = {0}, b[200] = {0}, len;
 	int x, y;
 	
 	cin >> str1 >> str2;
 	
 	if ( strlen(str1) != strlen(str2) )
 	{
	    cout << "NO" << endl;
		return 0; 
    }
    
    len = strlen(str1);
    
    for ( int i = 0; i < len; i++ )
    {
 	 	x = str1[i] - 0;
 	 	y = str2[i] - 0;
 	 	a[x]++;
 	 	b[y]++;
    }
    for ( int j = 0; j < 200; j++ )
    {
 	 	if ( a[j] != b[j] )
	   	{
 	   	   cout << "NO" << endl;
 	   	   return 0;
		}
	}
    cout << "YES" << endl;
    return 0;
}
char s1[MAX],s2[MAX];
int stat1[300],stat2[300];
int len;

int main()
{
	int i,flag;
	cin>>s1>>s2;
	len=strlen(s1);
	if (strlen(s2)!=len)
	{
		cout<<"NO"<<endl;
		return 0;
	}
	memset(stat1,0,sizeof (stat1));
	memset(stat2,0,sizeof (stat2));
	for (i=0;i<len;i++)
	{
		stat1[s1[i]]++;
		stat2[s2[i]]++;
	}
	flag=1;
	for (i=0;i<300;i++)
	{
		if (stat1[i]!=stat2[i])
		{
			flag=0;
			break;
		}	
	}
	if (flag==0)
	{
		cout<<"NO"<<endl;
	}
	if (flag==1)
	{
		cout<<"YES"<<endl;
	}
	return 0;
}
void kjj(char a[],int len)
{
	int i,j;
	char c;
	len=strlen(a);
	for(i=1;i<len;i++)
		for(j=0;(j<len-i)&&(a[j]!='\0');j++)
			if(a[j]>a[j+1])
			{
				c=a[j];
				a[j]=a[j+1];
				a[j+1]=c;
			}
			
}
			
void main()
{
	char a[10000],b[10000];
	int len1,len2;
    scanf("%s %s",a,b);
    len1=strlen(a);len2=strlen(b);
	kjj(a,len1);
	kjj(b,len2);
	if(strcmp(a,b)==0&&len1==len2)
		printf("YES");
	else
		printf("NO");
}
char f(char a[])
{
    int i,j,k=strlen(a);
    char temp;
    for(j=0;j<k;j++)
    {
        for(i=0;i<k-j;i++)
        {
            if(a[i]<a[i-1])
            {
                temp=a[i];
                a[i]=a[i-1];
                a[i-1]=temp;
            }
        }
    }
    return'o';
}
int main()
{
    char a1[1000],a2[1000];
    scanf("%s %s",a1,a2);
    f(a1);
    f(a2);
    if(strcmp(a1,a2)==0)
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    return 0;
}
int rearrange(char s1[], char s2[])
{
  int count1[128]={0}, count2[128]={0};
int len1,temp;
len1=strlen(s1); temp=strlen(s2);
if( len1!=temp) return 0;
for(temp=0; temp<len1; ++temp)
{ count1[s1[temp]]++; count2[s2[temp]]++;}
for(temp=0;temp<128; ++temp)
if(count1[temp]!=count2[temp]) return 0;
return 1;
}
void main()
{
  int n,j,k,l1,l2,o,i;
  char a[51],b[51];

  scanf("%s %s",a,b);
  if(rearrange(a,b)!=0)   printf("YES");
  else printf("NO");



  }
void main()
{
    int i,j,m=1,t,a,b;
	char str1[40],str2[40];
	scanf("%s%s",str1,str2);
	a=strlen(str1);
	b=strlen(str2);
	if(a!=b)printf("NO");
	else
    {for(j=0;j<a-1;j++)
		for(i=0;i<a-1-j;i++)
			if(str1[i]<str1[i+1])
			{
				t=str1[i];
				str1[i]=str1[i+1];
				str1[i+1]=t;
			}
     for(j=0;j<a-1;j++)
		for(i=0;i<a-1-j;i++)
			if(str2[i]<str2[i+1])
			{
				t=str2[i];
				str2[i]=str2[i+1];
				str2[i+1]=t;
			}
		
		for(i=0;i<=a-1;i++)
		
			{
				if(str1[i]==str2[i])m=m*1;
			    else m=m*0;
			}
     if(m=1)printf("YES");
	 else printf("NO");
	}
}
int main()
{
	int i, j, k, m, count = 0;
	char str[1000];
	cin.getline (str, 1000);
	m = strlen (str);
	for (k = 0; ; k++)
		if (str[k] == ' ')
			break;
	for (i = 0; i < k; i++)
	{
		for (j = k + 1; j <= m; j++)
		{
			if (str[i] == str[j])
			{
				str[j] = '0';
				count++;
				break;
			}
		}
		if (j == 2 * k + 1)
			break;
	}
	if ((i < k) || ((count < k) && (count <= m - k - 1)) || ((count <= k) && (count < m - k - 1)))
		cout << "NO" << endl;
	else
		cout << "YES" << endl;
	return 0;
}
void main()
{
	char a[100],b[100];
	int an,bn,i,j,r=0;
	scanf("%s %s",&a,&b);
	an=strlen(a);
	bn=strlen(b);
	if(an!=bn)r=1;
	for(i=0;i<bn;i++){
		int is=0;
		for(j=0;j<an;j++)
			if(b[i]==a[j]&&(b[i]!=1&&a[j]!=1)){is=1;
			b[i]=1;
			a[j]=1;
		}
		if(is==0)r=1;
	}

	if(r==0)printf("YES");
	else printf("NO");
}
main()
{
	char str1[1000],str2[1000];
	int count1[128]={0},count2[128]={0};
	int b=1,i;
	scanf("%s %s",str1,str2);
	for(i=0;i<=strlen(str1)-1;i++)
		count1[str1[i]]++;
	for(i=0;i<=strlen(str2)-1;i++)
		count2[str2[i]]++;
	for(i=0;i<=127;i++)
		if(count1[i]!=count2[i])b=0;
	if(b==0)printf("NO");
	else printf("YES");
}
int main()
{
	char a[1100]={'\0'};
	char b[1100]={'\0'};
	cin>>a>>b;
	int la,lb,jieguo=0,jishu=0;
	la=strlen(a);
	lb=strlen(b);
	if(la!=lb)jieguo=0;
	else
	{
		int i,j;
		for(i=0;i<la;i++)
		{
			for(j=0;j<la;j++)
			{
				if(b[j]==a[i]){b[j]='\0';jishu++;break;}
			}
		}
		if(jishu==la)jieguo=1;
	}
	if(jieguo==1)cout<<"YES";
	else cout<<"NO";

		

	return 0;
}
/*
 * ??????.cpp
 *
 *  Created on: 2011-12-25
 *      Author: Administrator
 */


int main()
{
	char str1[10000],str2[10000];
	int flag[10000] ={0};
	cin.getline(str1,10000);
	int i,j;
	for(i=0;str1[i]!=' ';i++);
	for(j=i+1;str1[j]!='\0';j++)
		str2[j-i-1]=str1[j];
	int len1,len2;
	len1=i;
	len2=j-i-1;
	if(len1!=len2)
		cout<<"NO"<<endl;
	else
	{
		for (i =0;i<len1;i++)
		{
			for (j =0;j<len1;j++)
				if(str1[i]==str2[j]&&flag[j]==0)
				{
					flag[j]=1;
					break;
				}
			if (j ==len1)
			{
				cout<<"NO"<<endl;
				break;
			}
		}
		if (i ==len1)
			cout<<"YES"<<endl;
	}



	return 0;
}
int main()
{
	int i,j,c=0,t;
	char a[20],b[20];
	char *pa,*pb;
	scanf("%s",a);
	scanf("%s",b);
	pa=a;
	pb=b;
	t=strlen(a);

	if (strlen(a)!=strlen(b))
		printf("NO");
	else{
	for(i=0;i<t;i++)
	{
		for(j=0;j<t;j++)
		{   
			if (*(pa+i)==*(pb+j))c++;
		}
	}

	if (c>=t)
		printf("YES\n");
	else printf("NO\n");
	}
}
int main()
{
	int i,m,n;
	char s1[100]={0},s2[100]={0},*p;
	scanf("%s %s",s1,s2);
	m=strlen(s1);
	n=strlen(s2);
	if(m!=n)
	{
		printf("NO\n");
		exit(0);
	}
	for(i=0;i<=m;i++)
	{
		if(strchr(s2,s1[i])==NULL)
		{
			printf("NO\n");
			exit(0);
		}
		else
		{
			p=strchr(s2,s1[i]);
			*p=027;
		}
	}
	printf("YES\n");
	return 0;
}
int main(){
	char a[10000];
	char b[10000];
	int i,j;
	char c;
	scanf("%s %s",&a,&b);
	if(strlen(a)!=strlen(b)) printf("NO");
	else{
		for(i=0;i<strlen(a);i++){
			for(j=i;j<strlen(a);j++){
				if(a[i]>a[j]){
					c=a[i];
					a[i]=a[j];
					a[j]=c;
				}
			}
		}
		for(i=0;i<strlen(b);i++){
			for(j=i;j<strlen(b);j++){
				if(b[i]>b[j]){
					c=b[i];
					b[i]=b[j];
					b[j]=c;
				}
			}
		}
		if(strcmp(a,b)==0) printf("YES");
		else printf("NO");
	}
	return 0;
}
void main()
{
	char a[100],b[100];
	int i,n1,n2,j,s;
    scanf("%s%s",a,b);
	n1=strlen(a);
	n2=strlen(b);
	if(n1==n2)
	{
		for(i=0;i<n1;i++)
		{for(j=0;j<n1;j++)
		if(a[i]==b[j]) {b[j]='\0';break;}
		}
		for(i=0;i<n1;i++)
			if(b[i]!='\0'){printf("NO");break;}
		if(i==n1) printf("YES");
	}
	else printf("NO");
}