semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main(int argc, char* argv[])
{
	char w1[100],w2[100];
	char letter;
	int count1[52],count2[52];
	int i;

	scanf("%s",w1);
	scanf("%s",w2);

	for(letter='A';letter<='Z';letter++){
		for(i=0,count1[letter-'A']=0;i<strlen(w1);i++){
			if(letter==w1[i]){
	count1[letter-'A']++;}}}
	for(letter='a';letter<='z';letter++){
		for(i=0,count1[letter-'a'+26]=0;i<strlen(w1);i++){
			if(letter==w1[i]){
	count1[letter-'a'+26]++;}}}

	for(letter='A';letter<='Z';letter++){
		for(i=0,count2[letter-'A']=0;i<strlen(w2);i++){
			if(letter==w2[i]){
	count2[letter-'A']++;}}}
	for(letter='a';letter<='z';letter++){
		for(i=0,count2[letter-'a'+26]=0;i<strlen(w2);i++){
			if(letter==w2[i]){
	count2[letter-'a'+26]++;}}}

	for(i=0;i<=51;i++){
		if(count1[i]!=count2[i]){
	printf("NO");
	break;}}

	if(i==52) printf("YES");
	return 0;
}
int main() {
	char a[1000];
	char b[1000];
	scanf("%s%s", a, b);
	int flag[200],i;
	memset(flag, 0, sizeof(flag));
	int lenA = strlen(a);
	int lenB = strlen(b);
	for( i = 0; i < lenA; i++) {
		flag[a[i]]++;
	}
	if(lenA != lenB) {
		printf("NO");
		return 0;
	}
	for(i = 0; i < lenB; i++) {
		flag[b[i]]--;
		if(flag[b[i]] < 0) {
			printf("NO");
			return 0;
		}
	}
	printf("YES");
	return 0;
}
int main()
{
    char str1[50],str2[50];
    int l1,l2;
    cin>>str1>>str2;
    l1=strlen(str1);
    l2=strlen(str2);
    if(l1!=l2)
        cout<<"NO"<<endl;
    else
        {
            for(int i=0;i<l1;i++)
               for(int j=1;j<l1-i;j++)
               {
                   if(str1[j]<str1[j-1])
                   {
                       char temp;
                       temp=str1[j];
                       str1[j]=str1[j-1];
                       str1[j-1]=temp;
                   }
                   if(str2[j]<str2[j-1])
                   {
                       char temp;
                       temp=str2[j];
                       str2[j]=str2[j-1];
                       str2[j-1]=temp;
                   }
               }
            if(strcmp(str1,str2)==0)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    return 0;
}
int main(int argc, char* argv[])
{
	char a[1000],b[1000];
	int c[100],k1,k2,t1[100]={0},t2[100]={0},e=0,i,j;
	scanf("%s %s",a,b);
	k1=strlen(a);
	k2=strlen(b);
	if(k1!=k2)
	printf("NO");
	else if(k1==k2)
	{
		for(i=0;i<k1;i++)
		{
			if(t1[i]==0)
			{
				for(j=0;j<k1;j++)
				{
					if(t2[j]==0)
					{
						if(a[i]==b[j])
						{
							t1[i]=1;
					        t2[j]=1;
							break;
						}
					}
				}
			}
		}
		for(i=0;i<k1;i++)
		e=e+t1[i];
		if(e==k1)
		printf("YES");
		else
		printf("NO");
	}
	return 0;
}
void paixu(char*x){
	int i,k;
	char temp;
	for(k=1;k<strlen(x);k++){
		for(i=0;i<strlen(x)-k;i++){
			if(x[i]>x[i+1]){
				temp=x[i+1];
				x[i+1]=x[i];
				x[i]=temp;
			}
		}
	}
}
int main()
{
    char a[100], b[100], c[50];
    scanf("%s %s",a,b);
    if(strlen(a)==strlen(b)){
		paixu(a);
		paixu(b);
		if(strcmp(a,b)==0){
			printf("YES\n");
		}else{
			printf("NO\n");
		}
	}else{
		printf("NO\n");
	}
	return 0;
}
int main()
{
	char a[100],b[100];
	int i,j,m,n,k=0,c[100]={0};
	memset(a,'0',sizeof(char));
	memset(b,'0',sizeof(char));
    scanf("%s",a);
	scanf("%s",b);
    m=strlen(a);
	n=strlen(b);
	if(m!=n)
		printf("NO\n");
	else
	{ for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			if(c[j]==0)
			{
				if(a[i]==b[j])
				{
					c[j]=1;
					k++;
					break;
				}
			}
			else continue;
	if(k==n)printf("YES\n");
	else printf("NO\n");}
    return 0;


}
main()
{
	char a[200],b[200];
	scanf("%s %s",a,b);
	int x,y;
         x=strlen(a);
         y=strlen(b);
	int i,j;
         char t;
	if(x!=y) printf("NO");
	else
	{
		for (i=0;i<x;i++)
			for(j=i+1;j<x;j++)
			{
				if(a[i]<a[j])
				{
					t=a[i];a[i]=a[j];a[j]=t;
				}
			}
		for (i=0;i<y;i++)
			for(j=i+1;j<y;j++)
			{
				if(b[i]<b[j])
				{
					t=b[i];b[i]=b[j];b[j]=t;
				}
			}
		if (strcmp(a,b)==0) printf("YES");
		else printf("NO");
	}
	return 0;
}
void main()
{
void number(char ch[100],int a[256],int b);
char ch1[100],ch2[100];
int m,n,i,t;
int a[256]={0},b[256]={0};
scanf("%s%s",ch1,ch2);
m=strlen(ch1);
n=strlen(ch2);
number(ch1,a,m);
number(ch2,b,n);
t=0;
for(i=0;i<=255;i++)
if(a[i]!=b[i])t=t+1;
if(t==0)printf("YES");
else printf("NO");
}
void number(char ch[100],int a[256],int b)
{
int i;
for(i=0;i<b;i++)
a[ch[i]]=a[ch[i]]+1;
}
int main()
{
    int n,i=1,m,flag1=0,flag2=0,lolo=0,p;
    char a[500],b[500];
    scanf("%s%s",a,b);
   n=strlen(a);
   p=strlen(b);
   if(n!=p)
   {printf("NO");}
   else
   {for(m=97;m<=122;m++)
   {for(i=0;i<n;i++)
   {
                    if(a[i]==m)
                    {flag1++;}
                    if(b[i]==m)
                    {flag2++;}
   }
   if(flag1!=flag2)
   {printf("NO");lolo=1;break;}
   else
   {lolo++;}
   }
   if(lolo>1)
   {printf("YES");}}
   return 0;
}
int main()
{
    char a[10000],b[10000];
    scanf("%s",a);
    scanf("%s",b);
    int length1,length2,i,j,t=0;
    length1=strlen(a);
    length2=strlen(b);
    if(length1!=length2) printf("NO\n");
    else
    {
        int aa[10000],bb[10000];
        for(i=0;i<length1;i++)
        {
               aa[i]=1;
               bb[i]=1;
        }
        for(i=0;i<length1;i++)
        {
               for(j=0;j<length1;j++)
               {
                      if(a[i]==b[j]&&bb[j]==1) 
                      {
                                               bb[j]=0;
                                               break;
                      }
               }
        }
        for(j=0;j<length1;j++)
        {
              if(bb[j]==0) t++;
        }
        if(t==length1) printf("YES\n");
        else printf("NO\n");
    }
               
    getchar();
    getchar();
    getchar();
}
int main()
{
	char s1[50],s2[50];
	int i=0,ns1,ns2,tag=1,flag=1,j=0;
	scanf("%s",s1);
	ns1=strlen(s1);
	scanf("%s",s2);
	ns2=strlen(s2);
	if(ns2!=ns1)
		tag=0;
	else for(i=0;i<ns1;i++){
			flag=1;
			for(j=0;j<ns2;j++){
				if(s1[i]==s2[j])
				{s2[j]='0'; flag=0;break;}
			}
		}
	if(flag) tag=0;
	if(tag) printf("YES");
		else printf("NO");
	return 0;
}
int main()
{
  char a[1000],b[1000];
  int num[130]={0},is=1,i;
  scanf("%s%s",a,b);
  for(i=0;a[i]!='\0';i++)num[a[i]]++;
  for(i=0;b[i]!='\0';i++)num[b[i]]--;
  for(i=1;i<130;i++)if(num[i]){is=0;break;}
  if(is)printf("YES\n");
  else printf("NO\n");
  return 0;
}
int main()
{
	char a[100];
	gets (a);
	int i,j,k;
	int d,b,c=0;
	d=strlen(a);
	for(i=0;i<d;i++)
	{
		if(a[i]==' ')
		{
			b=i;
			break;
		}
	}
	if((d-2*b-1)!=0)
		cout<<"NO"<<endl;
	else
	{
		for(j=0;j<b;j++)
		{
			for(k=i+1;k<d;k++)
			{
				if(a[j]==a[k]){
					c++;
				    a[k]=' ';
				    break;
				}
			}
		}
		if(c==b)
			cout<<"YES";
		else
			cout<<"NO";
	}
	return 0;

}
void main()
{
	int i,j,m,n,c=0;
	char a[40],b[40],k;
	scanf("%s%s",&a,&b);
	m=strlen(a);
	n=strlen(b);
	if(m==n)
	{
		for(i=0;i<m;i++)
		{
			for(j=0;j<=i;j++)
			{
				if(a[j]>a[i])
				{
					k=a[j];a[j]=a[i];a[i]=k;
				}
				if(b[j]>b[i])
				{
					k=b[j];b[j]=b[i];b[i]=k;
				}
			}
		}
	    for(i=0;i<m;i++)
		{
			if(a[i]!=b[i])
			{	c=1;
			break;}
		}
		if(c==0)
			printf("YES");
		else printf("NO");
	}
	else printf("NO");
}
//?????? ???

char A[200],B[200];
int a[256],b[256],i;

int main()
{
    scanf("%s%s",A,B);
    i=0;

    //????????????????
    while(A[i]!='\0')
    {
        a[A[i]]++;
        i++;
    }
    i=0;
    while(B[i]!='\0')
    {
        b[B[i]]++;
        i++;
    }

    //??????
    for(i=0;i<256;i++)
        if(a[i]!=b[i])
        {
            printf("NO");
            return 0;
        }

    printf("YES");
}
void main()
{
	int i,j;
	int n;
	char str1[10];
	char str2[10];
	char temp;
	scanf("%s%s",str1,str2);
	n=strlen(str1);
	for(j=1;j<n;j++)
		for(i=0;i<n-j;i++)
			if(str1[i]<str1[i+1])
			{
				temp=str1[i];
				str1[i]=str1[i+1];
				str1[i+1]=temp;
			}
		n=strlen(str2);
		for(j=1;j<n;j++)
		    for(i=0;i<n-j;i++)
			    if(str2[i]<str2[i+1])
				{
				    temp=str2[i];
				    str2[i]=str2[i+1];
				    str2[i+1]=temp;
				}
			if(strcmp(str1,str2)==0)
				printf("YES\n");
			else
				printf("NO\n");

}
int main()
{
	char a[20],b[20];
	int g,e,f=1,i,c[250]={0},d[250]={0};
	scanf("%s%s",a ,b);
	e=strlen(a);
	g=strlen(b);
	if(e!=g)
	{
		f=0;
	}
	for(i=0;i<e;i++)
	{
		c[a[i]]++;
	}
	for(i=0;i<g;i++)
	{
		d[b[i]]++;
	}
	for(i=0;i<250;i++)
	{
		if(c[i]!=d[i])
		{
			f=0;
		}
	}
	if(f==0)
	{
		printf("NO");
	}
	if(f==1)
	{
		printf("YES");
	}
	return 0;
}
void main()
{
	int check(char a1[],char a2[]);
	char a1[100],a2[100];
	scanf("%s%s",a1,a2);
	int m,n,re;
	m=strlen(a1);
	n=strlen(a2);
	if(m!=n)
		printf("NO\n");
	else re=check(a1,a2);
	if (re==1)
		printf("YES\n");
	else if (re==0)
		printf("NO\n");
}
int check(char a1[],char a2[])
{
	int i=0,j=0,re;
    int c1[100]={0},c2[100]={0};
	int m, p=0;
    m=strlen(a1);
	for(i=0;i<m;i++)
		for(j=0;j<m;j++)
			if(a1[i]==a1[j])
				c1[i]++;
	for(i=0;i<m;i++)
		for(j=0;j<m;j++)
			if(a2[i]==a2[j])
				c2[i]++;

	for(i=0;i<m;i++)
	{for(j=0;j<m;j++)
			if(a1[i]==a2[j])
				if(c1[i]==c2[j])
				{p++;break;}
	}
    if(p>=m)
		re=1;
	else re=0;
	return(re);
}
void min(char a[],char b[])
{
	char k;
    int i,j;
	for(i=0;i<strlen(a)-1;i++)
     for(j=0;j<strlen(a)-i-1;j++)
		 if(a[j]<a[j+1])
		 {
			 k=a[j];
			 a[j]=a[j+1];
			 a[j+1]=k;
		 }
   for(i=0;i<strlen(b)-1;i++)
     for(j=0;j<strlen(b)-i-1;j++)
		 if(b[j]<b[j+1])
		 {
			 k=b[j];
			 b[j]=b[j+1];
			 b[j+1]=k;
		 }
		 if(strcmp(a,b)==0)
			 printf("YES");
		 else
			 printf("NO");
}
void main()
{
	char a[1000]={'\0'},b[1000]={'\0'};
	scanf("%s %s",a,b);
	min(a,b);
}
main()
{
	int len1,len2;
	struct abc
	{
		int a[1000];
		char s[1000];
	};
	struct abc s1,s2;
	int i,j;

	scanf("%s %s",s1.s,s2.s);
	len1=strlen(s1.s);
	len2=strlen(s2.s);
	

	if(len1!=len2)
		printf("NO");
	else
	{
		for(i=0;i<len1;i++)
			s2.a[i]=0;
		
		for(i=0;i<len1;i++)
			for(j=0;j<len1;j++)
				if(s2.a[j]==0&&s2.s[j]==s1.s[i])
				{s2.a[j]=1;break;}

		for(i=0;i<len1;i++)
			if(s2.a[i]==0) break;

		if(i==len1) printf("YES");
		else printf("NO");
	}
}
int main()
{
char a[500]={0},b[500]={0};
int c[500]={0};
int i,j,k,l1,l2;
scanf("%s %s",a,b);
l1=strlen(a);
l2=strlen(b);
if(l1!=l2)
{printf("NO");return 0;}
else
{
for(i=0;i<l1;i++)
for(j=0;j<l2;j++)
if((b[j]==a[i])&&(c[j]==0))
{c[j]=1;break;}

int sum=0;
for(i=0;i<l2;i++)
sum=sum+c[i];
if(sum==l1)
printf("YES");
else
printf("NO");


}


}
int main()
{ char p1[500],p2[500];
  scanf("%s",p1);
  scanf("%s",p2);
  int n,i,j,m;
  m=strlen(p1);
  n=strlen(p2);
  int num1[26],num2[26];
  char alpha[26];
  for(i=0;i<26;i++)
  {
  	num1[i]=0;num2[i]=0;
  	alpha[i]='a'+i;
  }
  for(i=0;i<m;i++)
  {
  	for(j=0;j<26;j++)
    { if(p1[i]==alpha[j])
      num1[j]++;}
  }
  for(i=0;i<n;i++)
  {
  	for(j=0;j<26;j++)
    { if(p2[i]==alpha[j])
      num2[j]++;}
  }
  int count=0;
  for(i=0;i<26;i++)
  {if(num1[i]==num2[i])
   count++;}
  if(count==26)
  printf("YES\n");
  else printf("NO\n");
  return 0;
}
void find(int a[52],char str[100])
{
	int i=0,k=0;
	for(i=0;i<52;i++)
		a[i]=0;
	for(k=0;str[k]!='\0';k++)
	{
		for(i=0;i<26;i++)
		{
		    if(str[k]=='a'+i)
			a[i]++;
		}
	}
	for(k=0;str[k]!='\0';k++)
	{
		for(i=0;i<26;i++)
		{
			if(str[k]=='A'+i)
				a[i+26]++;
		}
	}
}
void main()
{
	char str1[100],str2[100];
	int a[52],b[52],i,n=0;
	int *p1,*p2;
	p1=a;
	p2=b;
	scanf("%s %s",str1,str2);
	find(a,str1);
	find(b,str2);

	for(i=0;i<52;i++)
	{
		if(*(p1+i)==*(p2+i))
			n++;
	}
	if(n==52)
		printf("YES") ;
	else
		printf("NO");
}
void main()
{
	char a[1000],b[1000];
	int i,j,c[1000]={0},d[1000]={0},z=1;
	scanf("%s%s",a,b);
	for(i=0;a[i]!='\0';i++)
	{
		for(j=0;b[j]!='\0';j++)
		{
			if(d[j]==0&&b[j]==a[i])
			{c[i]=1;d[j]=1;break;}
		}
	}
	for(i=0;a[i]!='\0';i++)
	if(c[i]==0){z=0;break;}
	for(j=0;b[j]!='\0';j++)
	if(d[j]==0){z=0;break;}
	if(z==1)printf("YES\n");
	else printf("NO\n");
}
int main()
{
	int a[123]={0},d[123]={0};
	char b[100]={'\0'},c[100]={'\0'};
	scanf("%s %s",b,c);
	int i=0,s=1;
	if(strlen(b)!=strlen(c)) s=0;
	else
	{
	   while(*(b+i)!='\0')
	   {
		   *(a+*(b+i))+=1;
		   *(d+*(c+i))+=1;
		   i=i+1;
	   }
	   for(i=65;i<=90;i++) s=s*(*(a+i)==*(d+i));
	   for(i=97;i<=122;i++) s=s*(*(a+i)==*(d+i));
	}
	if(s==0) printf("NO");
	else printf("YES");
	return 0;
}
void main(){
	char w1[100],w2[100];
	int len1,len2,n1[128]={0},n2[128]={0};
	int i,temp;
	scanf("%s",&w1);
	scanf("%s",&w2);
	len1=strlen(w1);
	len2=strlen(w2);
	if(len1!=len2){
		printf("NO\n");
		return;
	}
	for(i=0;i<len1;i++){
		temp=(int) w1[i];
		n1[temp]++;
	}
	for(i=0;i<len2;i++){
		temp=(int) w2[i];
		n2[temp]++;
	}
	for(i=0;i<128;i++){
		if(n1[i]!=n2[i]){
			printf("NO\n");
			return;
		}
	}
	printf("YES\n");
}
void main()
{
    int m,n,i,j,p[26]={0},q[26]={0};
	char a[300],b[300];
    scanf("%s %s",&a,&b);
	for (i=0;i<strlen(a);i++)
	{
		for(j=0;j<26;j++)
		{
			if(a[i]==97+j)
				p[j]++;
		}
	}
	for (i=0;i<strlen(b);i++)
	{
		for(j=0;j<26;j++)
		{
			if(b[i]==97+j)
				q[j]++;
		}
	}
	for (i=0;i<26;i++)
	{
		if (p[i]!=q[i])
		{
			printf("NO");
			goto loop;
		}
	}
	printf("YES");
loop:;
}
void main()
{
	char a[21],b[21];
	int r,s,t;
	int m,n,x;
	char a1[300]={0},b1[300]={0};
	scanf("%s%s",a,b);
	m=strlen(a);
	n=strlen(b);
	for(r=0;r<=m-1;r++)
	{
		t=a[r];
		a1[t]++;
	}
	for(s=0;s<=n-1;s++)
	{
		t=b[s];
		b1[t]++;
	}
	for(t=0,x=1;t<=299;t++)
	{
		if(a1[t]!=b1[t]) x=0;
	}
	if(x==1) printf("YES");
	else printf("NO");
}
int main()
{
	char a[100],b[100];
	int m,n,t=1,r[100]={0},i,j;
	scanf("%s%s",a,b);
    m=strlen(a); n=strlen(b);
	if(m==n)
	  {for(i=0;i<=m-1;i++)
         for(j=0;j<=n-1;j++)
			if(b[j]==a[i]&&r[j]==0) {r[j]=1; break;}
       for(i=0;i<=n-1;i++)
		 if(r[i]==0) {t=0; break;}
	  } 
	else t=0;
	if(t==1) printf("YES\n");
	else printf("NO\n");
       return(0);
}
int main(){
	char a[100],b[100],mid;
	int i,j,l1,l2,judge;
	scanf("%s %s",a,b);
	l1=strlen(a);
	l2=strlen(b);
	if(l1!=l2){
		printf("NO");
	}else{
		for(i=1;i<=l1;i++){
			for(j=0;j<l1-i;j++){
				if(a[j]<a[j+1]){
					mid=a[j];
					a[j]=a[j+1];
					a[j+1]=mid;
				}
			}
		}
		for(i=1;i<=l1;i++){
			for(j=0;j<l1-i;j++){
				if(b[j]<b[j+1]){
					mid=b[j];
					b[j]=b[j+1];
					b[j+1]=mid;
				}
			}
		}
		judge=strcmp(a,b);
		if(judge==0){
			printf("YES");
		}else{
			printf("NO");
		}
	}
}
int main()
{
	int i,n1,n2,count1[26]={0},count2[26]={0},count={0};
	char s[50],w[50];
	scanf("%s%s",s,w);
	for(i=0;s[i]!='\0';i++){
		n1=s[i]-'a';
		count1[n1]++;
	
	}
	for(i=0;w[i]!='\0';i++){
		n2=w[i]-'a';
		count2[n2]++;
	}
	for(i=0;i<26;i++){
		if(count1[i]==count2[i])
			count++;
	}
	if(count==26){
		printf("YES");
	}
	else{
		printf("NO");
	}
			
	return 0;
}
int count(char *p,int *pn,int n)
{
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=65;j<91;j++)
		{
			if(*(p+i)==j) (*(pn+j-65))++;
		}
		for(j=97;j<123;j++)
		{
			if(*(p+i)==j) (*(pn+j-97+26))++;
		}

	}
	return 0;
}

int main()
{
	char z1[100],z2[100];
	scanf("%s %s",z1,z2);
	int a1[52]={0},a2[52]={0},n1=strlen(z1),n2=strlen(z2),i,flag=0;
	char *p1=z1,*p2=z2;
	int *pn1=a1,*pn2=a2;
	count(p1,pn1,n1);
	count(p2,pn2,n2);
	for(i=0;i<52;i++)
	{
		if(a1[i]!=a2[i]) flag=1;
	}
	if(flag==0) printf("YES");
	else printf("NO");
	return 0;
}
int main()
{
	int i,j,c,A,B;
	char a[100],b[100];
	scanf("%s %s",a,b);
	A=strlen(a);
	B=strlen(b);
	if(A!=B)
	{
		printf("NO");
	}
	else
	{
		for(i=0;i<A;i++)
		{
			for(j=0;j<A;j++)
			{
				if(a[i]==b[j])
				{
					b[j]='0';
					break;
				}
			}
		}
		c=0;
		for(i=0;i<A;i++)
		{
			if(b[i]!='0')
			{
				c=1;
				break;
			}
			else
			{
				c=0;
			}
		}
		if(c==1)
		{
			printf("NO");
		}
		else
		{
			printf("YES");
		}
	}
	return 0;
}
void main()
{
	char str1[300],str2[300];
	int i,j,m,n,leap=0,t;
	scanf("%s",str1);
	scanf("%s",str2);
	m=strlen(str1);
	n=strlen(str2);
	if(m!=n)
	{
		leap=1;
	}
	else 
	{
		for(i=0;i<m;i++)
		{
			for(j=i;j<m;j++)
			{
				if(str2[j]==str1[i])
				{
					t=str2[i];
					str2[i]=str2[j];
					str2[j]=t;
				}
			}
		}
		if(strcmp(str1,str2)!=0)
		{
			leap=1;
		}
	}
	if(leap)
	{
		printf("NO");
	}
	else
	{
		printf("YES");
	}
}
char str1[1000];
char str2[1000];
void paixu(char a[]);
int main(){
	scanf("%s",&str1);
	scanf("%s",&str2);
	if (strlen(str1)!=strlen(str2)){
		printf("NO\n");
		return 0;
	}
	paixu(str1);
	paixu(str2);
	int len=strlen(str1);
	int check=1;
	int i;
	for(i=0;i<len;i++){
		if (str1[i]!=str2[i]) {
			check=0;break;}
	}
	if (check==1){
		printf("YES\n");
	}
	else
	{
	printf("NO\n");
	}



	return 0;
}
void paixu(char a[]){
	int len=strlen(a);
	int i,j;
	for(j=0;j<len-1;j++)
		for(i=0;i<len-1-j;i++){
			if (a[i]>a[i+1]){
				char temp=a[i+1];
				a[i+1]=a[i];
				a[i]=temp;
			}
		
		}
}
void main()
{
	char s1[100],s2[100],m;
	int a,l,i,j,k;
	scanf("%s%s",s1,s2);
	l=strlen(s1);
	if(l!=strlen(s2))printf("NO");
	else
	{
		for(i=0;i<=l-1;i++)
		{
			for(j=i;j<=l-1;j++)
			{
				if(s1[i]==s2[j])
				{
					m=s2[i];
					s2[i]=s2[j];
					s2[j]=m;
				}
			}
				if(s1[i]!=s2[i])
				{
					printf("NO");
					break;
				}
		}
		if(i==l)printf("YES");
	}
}
void main()
{
	int i,j,m[52]={0},n[52]={0};
	char a[100],b[100];
    scanf("%s%s",a,b);
	if(strlen(a)!=strlen(b))
		printf("NO");
	else if(strlen(a)==strlen(b)) 
	{
		for(i=0;i<=strlen(a)-1;i++)
		{
		if(a[i]>='a'&&a[i]<='z')
			m[a[i]-'a'+26]++;
		if(a[i]>='A'&&a[i]<='Z')
			m[a[i]-'A']++;
		if(b[i]>='a'&&b[i]<='z')
			n[b[i]-'a'+26]++;
		if(b[i]>='A'&&b[i]<='Z')
			n[b[i]-'A']++;
		} 
	    
		for(j=0;j<52;j++)
		{
			if(m[j]!=n[j])
			{
			    printf("NO");
			    break;
			}
		    if(j==51)
			    printf("YES");
		}
	}
}
void main()
{
	int n1,n2,b[100],i,j,p=0;
	char s1[100],s2[100];
    scanf("%s %s",s1,s2);
	n1=strlen(s1);
	n2=strlen(s2);
	for(i=0;i<n1;i++)
	{
		b[i]=1;
	}
	if(n1!=n2)
	{
		printf("NO");
	}
	else 
	{
		i=0;
		while(i<n1)
		{  
			for(j=0;j<n1;j++)
			       if(s1[i]==s2[j]&&b[j]==1)break;
		    if(j<n1)
			 {
				p++;
	           b[j]=0;
			 }
			else 
			{
				i=n1;
			}
			i++;
		}
		if(p==n1)printf("YES");
		else printf("NO");
	}
}
int main(void)
{
	char str1[1000],str2[1000];
	int count1[128]={0},count2[128]={0};
	scanf("%s",str1);
	scanf("%s",str2);
	int strl1=strlen(str1),strl2=strlen(str2);
	if(strl1!=strl2)
	{
		printf("NO");return 0;
	}
	for(int i=0;i<strl1;i++)	count1[str1[i]]++;
	for(int i=0;i<strl2;i++)	count2[str2[i]]++;
	for(int i=0;i<128;i++)
	{
		if(count1[i]!=count2[i])
		{
			printf("NO");return 0;
		}
	}
	printf("YES");
	return 0;
}
int main(){
    char s1[500],s2[500],*p;
    int num1[52]={0},num2[52]={0},ASC[52],i,j,len1,len2;
    scanf("%s %s",s1,s2);
    len1=strlen(s1);
    len2=strlen(s2);
    for(i=0;i<26;i++)
        ASC[i]=65+i;
    for(i=0;i<26;i++)
        ASC[i+26]=97+i;
    for(p=s1;p<s1+len1;p++){
        for(j=0;j<52;j++){
            if(*p==ASC[j]){
                num1[j]++;
                break;
            }
        }
    }
    for(p=s2;p<s2+len2;p++){
        for(j=0;j<52;j++){
            if(*p==ASC[j]){
                num2[j]++;
                break;
            }
        }
    }
    for(i=0;i<52;i++){
        if(num1[i]!=num2[i]){
            printf("NO");
            break;
        }
        else if(i==51)
            printf("YES");
    }
    return 0;
}
int main()
{
	char z[2][200];
	scanf("%s %s",z[0],z[1]);
	int i=0,j=0;
	char e;
	int n=strlen(z[0]);
	for(i=1;i<=n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(z[0][j]<=z[0][j+1])
			{
				e=z[0][j];
				z[0][j]=z[0][j+1];
				z[0][j+1]=e;
			}
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(z[1][j]<=z[1][j+1])
			{
				e=z[1][j];
				z[1][j]=z[1][j+1];
				z[1][j+1]=e;
			}
		}
	}
	if(strcmp(z[1],z[0])==0)
	{
		printf("YES");
	}
	else
	{
		printf("NO");
	}
	return 0;
}
int main()
{int len1,len2,i,j,temp;
char a[100],b[100];
scanf("%s%s",a,b);
len1=strlen(a);len2=strlen(b);
for(i=0;i<len1-1;i++)
	for(j=i+1;j<len1;j++)
		if(a[i]>a[j])
		{temp=a[i];a[i]=a[j];a[j]=temp;
		}
for(i=0;i<len2-1;i++)
	for(j=i+1;j<len2;j++)
		if(b[i]>b[j])
		{temp=b[i];b[i]=b[j];b[j]=temp;
		}	
if(len1!=len2)	printf("NO");	
else
    {	for(i=0;i<len1;i++)
		if(a[i]!=b[i]) break;
	if(i==len1) printf("YES");
		else printf("NO");
    }	
return 0;
}
void main()
{
	char a[100],b[100];int m,n,i,j,r=0,t=0,s=0,q=0,p=0,o=0;
	scanf("%s %s",&a,&b);
	m=strlen(a);n=strlen(b);
	for(i=0;i<m;i++)
	{
		r=r+a[i];
	}
    for(i=0;i<n;i++)
	{
		o=o+b[i];
	}


	for(i=0;i<m;i++)
	{
		for(j=i+1;j<m;j++)
		{
			if(a[j]==a[i])a[j]=0;
		}
	}
	for(i=0;i<m;i++)
	{
		t=t+a[i];
		if(a[i]!=0)s++;
	}
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(b[j]==b[i])b[j]=0;
		}
	}
	for(i=0;i<n;i++)
	{
		q=q+b[i];
		if(b[i]!=0)p++;
	}
	if(t==q&&s==p&&r==o)printf("YES");
	else
		printf("NO");
}
void main() 
{ 
	int cmp(char a[],char b[],int);
	char a[100]="",b[100]="";
	scanf("%s %s",a,b);
	if(strlen(a)!=strlen(b))printf("NO\n");
	else
	{
	if(cmp(a,b,0)==1)printf("YES\n");
	else printf("NO\n");
	}
} 

int cmp(char a[],char b[],int n)
{
	if(n==strlen(a))return 1;
	else
	{
		int j;
			for(j=0;j<strlen(a);j++)if(b[j]==a[n])break;
			if(j==strlen(a))return 0;
			else{b[j]=0;return cmp(a,b,n+1);}
	}
}
/*
 * md.cpp
 *
 *  Created on: 2010-12-31
 *      Author: 10040
 */



int main(){
	char str[225];
	cin.getline(str, 225);

	char str1[255], str2[255];
	int i=0;
	int len = strlen(str);
	for(; i<len; i++){
		if(str[i]==' ')
			break;
		str1[i] = str[i];
	}
	str1[i] = '\0';
	i++;
	int j;
	for(j=0; i<len; j++,i++){
		str2[j] = str[i];
	}
	str2[j]='\0';
	//cout << str1 << endl << str2 ;
	int len1 = strlen(str1);
	int len2 = strlen(str2);
	if(len1 != len2){
		cout << "NO" << endl;
		return 0;
	}
	for(int k=0; k<len1; k++){
		int flag=0;
		for(int p=0; p<len2; p++){
			if(str2[p]==str1[k]){
				str2[p]='1';
				flag=1;
				break;
			}
		}
		if(flag==0){
			cout << "NO" << endl;
			return 0;
		}
	}

	cout << "YES" << endl;





	return 0;
}
void main()
{
	int rearrange(char s1[],char s2[]);
	char s1[300],s2[300];
	int k;
	scanf("%s%s",s1,s2);
	k=rearrange(s1,s2);
	if(k)printf("YES\n");
	else printf("NO\n");
}
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 change(char aa[])
{
	int len,i,j;
	char cha;
	len=strlen(aa);
	for (i=0;i<len-1;i++)
		for(j=len-2;j>=i;j--)
			if (aa[j]>aa[j+1])
			{
				cha=aa[j];
				aa[j]=aa[j+1];
				aa[j+1]=cha;
			}
}

void main()
{
	int i,j;
	char a[1000],b[1000];
	scanf("%s %s",a,b);
	change(a);
	change(b);
	if(strcmp(a,b)==0) printf("YES\n");
	else printf("NO\n");
}
void main()
{
	char a[100],b[100];
    int  c[200]={0},d[200]={0},j,i,k=0,n,m;
    scanf("%s%s",a,b);
    n=strlen(a);m=strlen(b);
    if(m!=n)printf("NO");
	else
	{
		for(i=0;i<n;i++)
		{
			c[a[i]]++;d[b[i]]++;

		}
	    for(i=0;i<200;i++)if(c[i]==d[i])k++;
	    if(k==200)printf("YES");
	    else printf("NO");
	
	
	
	}
}
/*
 * 09.cpp
 *
 *  Created on: 2014-1-5
 *      Author: Administrator
 */
int main()
{
	char a[100],b[100];
	int i,j;
	int s1,s2;
	cin>>a>>b;
	s1=strlen(a);
	s2=strlen(b);
	if(s1!=s2)
		{
		cout<<"NO"<<endl;
	    return 0;
		}
	else
	{
		for(i=0;i<s1;i++)
			for(j=0;j<s1;j++)
			{
				if(b[j]==a[i])
				{
					b[j]='*';
					break;
				}
			}
		for(i=0;i<s1;i++)
			if(b[i]!='*')
			{
				cout<<"NO"<<endl;
				return 0;
			}
		cout<<"YES"<<endl;
		return 0;
	}

}
int main()
{
	char str1[100], str2[100], temp;
	int i, j;
	cin >> str1 >> str2;
	if (strlen(str1) == strlen(str2))
	{
		for (i = 0; i < strlen(str1) - 1; i ++)
			for (j = i + 1; j < strlen(str1); j ++)
				if (str1[i] > str1[j])
				{
					temp = str1[i];
					str1[i] = str1[j];
					str1[j] = temp;
				}
		for (i = 0; i < strlen(str2) - 1; i ++)
			for (j = i + 1; j < strlen(str2); j ++)
				if (str2[i] > str2[j])
				{
					temp = str2[i];
					str2[i] = str2[j];
					str2[j] = temp;
				}
		if (strcmp(str1, str2) == 0)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}
	else
		cout << "NO" << endl;
		return 0;
	}