semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int comp(char s1[],char s2[],int j,int i)
{
	if(s1[j]==s2[i])
	{s2[i]=0;return(1);}
	else if((s1[j]!=s2[i])&&(i>0))
		{i=i-1;return(comp(s1,s2,j,i));}
	else if((s1[j]!=s2[i])&&(i==0))
	return(0);
}
void main()
{int i,j,k,y,u;
 char str1[100],str2[100],c;
 for(i=0;(c=getchar())!=' ';i++)
	 str1[i]=c;
 gets(str2);
 i=i-1;
 j=strlen(str2)-1;
 if(i!=j)
 printf("NO");
 else 	{u=i; 
	 for(k=0,y=0;k<=u;k++)
		 if(comp(str1,str2,k,i)==0)
		 {y=1;break;}
	 if(y==0) printf("YES");
	 else if(y==1) printf("NO\n");}
}
void main()
{
	int i,j;
	int m,n,k=0,t=0;
	char a[100],b[100];
	scanf("%s %s",a,b);

	m=strlen(a);
	n=strlen(b);

	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			if(b[i]==a[j])
			{
				k=k+1;
				a[j]='*';
				break;
			}
		}
	}

	if(k==n&&m==n) printf("YES");
	else printf("NO");
}
void main()
{
char a[300],b[300];
int j1,j2,i,k,j;
scanf("%s %s",a,b);
j1=strlen(a);
j2=strlen(b);
if (j1!=j2) printf("NO");
else
{j=j1;
for (i=0;i<j;i++)
for (k=0;k<j;k++)
if (a[i]==b[k])
{
j1=i;j2=k;
a[j1]=b[j2]=' ';
break;
}
k=0;
for (i=0;i<j;i++)
if (a[i]!=' ') k++;
if (k==0) printf("YES");
else printf("NO");
}
}
void f(char a[],int l)
{
	int i,j;
	char t;
	for(i=0;i<l-1;i++)
	{
		for(j=l-2;j>=0;j--)
			if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}
	}
}
main()
{
	char a[500]={0},b[500]={0};
	scanf("%s %s",a,b);
	int la=strlen(a),lb=strlen(b);
	f(a,la);
	f(b,lb);
	if(strcmp(a,b)==0) printf("YES\n");
	else printf("NO\n");
}
int main()
{
	char a[40],b[40];
	int length;
	int i,j,x;
	cin>>a>>b;
	if(strlen(a) != strlen(b))
		cout<<"NO"<<endl;
	else
	{
		length=strlen(a);
		x=length;
		for(i=0;i<length;i++)
		{
			for(j=0;j<length;j++)
			{
				if(a[i]==b[j])
				{
					b[j]='\0';
					x--;
					break;
				}
			}
		}
		if(x==0)
			cout<<"YES"<<endl;
		else
			cout<<"NO"<<endl;
	}
	return 0;
}
int main()
{
	char a[100],b[100],c,d;
	char *p,*q;
	int al,bl,i,j;
	scanf("%s",&a);
	scanf("%s",&b);
	al=strlen(a);
	bl=strlen(b);
	p=a;
	q=b;
		for(j=0;j<al;j++)
		{
			for(i=0;i<al+1-j;i++)
			{
				if(*(p+i)<*(p+i+1))
				{
					c=*(p+i);
					*(p+i)=*(p+i+1);
					*(p+i+1)=c;
				}
			}
		}
		for(j=0;j<bl;j++)
		{
			for(i=0;i<bl+1-j;i++)
			{
				if(*(q+i)<*(q+i+1))
				{
					d=*(q+i);
					*(q+i)=*(q+i+1);
					*(q+i+1)=d;
				}
			}
		}
		if(strcmp(a,b)==0)
			printf("YES");
		else
			printf("NO");

	return 0;
}
void f(char c[1000],int i)
{
	int j,k;
	for(j=0;j<i;j++)
	{
		for(k=0;k<i-j;k++)
		{
			if(c[k]>c[k+1])
			{
				char s;
				s=c[k];
				c[k]=c[k+1];
				c[k+1]=s;
			}
		}
	}
}
int main()
{
	char s[1000],c[1000];
	scanf("%s%s",s,c);
	int lens,lenc;
	lens=strlen(s);
	lenc=strlen(c);
	int i,j,k;
	if(lens!=lenc)
		printf("NO");
	else
	{
		f(s,lens);
		f(c,lenc);
		for(k=0;k<lens;k++)
		{
			if(s[k]!=c[k])
			{
				printf("NO");
				break;
			}
		}
		if(k==lens)
			printf("YES");
	}
}
void main()
{
 char a[80],b[80],c,k;
 int la,lb,i,j;
 scanf("%s",a);
 scanf("%s",b);
 la=strlen(a);
 lb=strlen(b);
 if(la!=lb) printf("NO");
 else if(la=lb)
 { 
   for(i=0;i<la;i++)
   { 
     for(j=i;j<la;j++)
	 {
       if(a[j]<a[i])
	   {c=a[i];a[i]=a[j];a[j]=c;}
	 }
   }
   for(i=0;i<la;i++)
   { 
     for(j=i;j<la;j++)
	 {
       if(b[j]<b[i])
	   {c=b[i];b[i]=b[j];b[j]=c;}
	 }
   }
 for(i=0;i<la;i++)
 {
  if(a[i]=b[i]) k=k+1;
 }
 if(k=la) printf("YES");
 else if(k!=la) printf("NO");
}
}
int main()
{
char a[100]={0};
char b[100]={0};
char c[201]={0};
int i,j,m=0,n=0;
gets(c);
for(i=0;c[i]!=' ';i++)
   a[i]=c[i];
for(j=0;c[i+j+1]!='\0';j++)
   b[j]=c[i+j+1];
if(i!=j){printf("NO");return 0;}
else  for(i=0;a[i]!='\0';i++)
          n=n+a[i]-b[i];
for(i=0;a[i]!='\0';i++)
         {for(m=0,j=0;b[j]!='\0';j++)
            if(a[i]==b[j])m=1;
          if(m==0||n!=0){printf("NO");break;}}
       if(m==1&&n==0)printf("YES");
 return 0;
}
void main()
{
	char s1[100],s2[100];
	int n1,n2,i,t,c1[128],c2[128];
	scanf("%s %s",s1,s2);
	for(i=0;i<128;i++) c1[i]=c2[i]=0;
	n1=strlen(s1);
	n2=strlen(s2);
	if(n1!=n2) printf("NO");
	else 
	{
		for(i=0;i<n1-1;i++)
		{
			t=s1[i];
			c1[i]++;
		}
		for(i=0;i<n2-1;i++)
		{
			t=s2[i];
			c2[i]++;
		}
		for(i=0;i<128;i++)
		{
			if(c1[i]!=c2[i]) break;
		}
		if(i==128) printf("YES");
		else printf("NO");
	}
}
void main()
{
	char s1[10],s2[10],c;
	int n1,n2,i,j,k;
	scanf("%s %s",s1,s2);
	n1=strlen(s1);
	n2=strlen(s2);
	if(n1!=n2)
	{
		printf("NO");
	}
	else
	{
		for(i=0;i<=n1-1;i++)
		{
			for(j=0;j<n1-i;j++)
			{
				if(s1[j]<=s1[j+1])
				{
					c=s1[j];s1[j]=s1[j+1];s1[j+1]=c;
				}
			}
		}
		for(i=0;i<=n2-1;i++)
		{
			for(j=0;j<n2-i;j++)
			{
				if(s2[j]<=s2[j+1])
				{
					c=s2[j];s2[j]=s2[j+1];s2[j+1]=c;
				}
			}
		}
		if(strcmp(s1,s2)==0)
			printf("YES");
		else printf("NO");
	}
}
void main()
{
	int count11[26]={0},count12[26]={0},count21[26]={0},count22[26]={0},length1,length2,i,j,k=0,p=0,m=0,n=0;
	char string1[100],string2[100];
	scanf("%s %s",string1,string2);
	length1=strlen(string1);length2=strlen(string2);
	for(i=0;i<length1;i++)
		if(string1[i]<='Z') {j=string1[i]-65;count11[j]++;}
		else {j=string1[i]-97;count12[j]++;}
	for(i=0;i<length2;i++)
		if(string2[i]<='Z') {j=string2[i]-65;count21[j]++;}
		else {j=string2[i]-97;count22[j]++;}
	while(count11[k]==count21[p])
	{
		k++;p++;
	}
		if(k!=26) printf("NO\n");
		else  if(k==26) 
		{
			while(count12[m]==count22[n]&&m<=25)
			{m=m+1;n=n+1;}
        if(m==26) printf("YES\n");
			else printf("NO\n");	
		}
}
void main()
{
	int m,i,p,j;
	long a,b;
	char s[1000],s1[1000];
	int ss[1000]={0};
	scanf("%s%s",&s,&s1);
	a=strlen(s);
	b=strlen(s1);
	if (a==b)
	{
	for (i=0;i<a;i++)
	{
		p=0;
		for (j=0;j<b;j++)
		{
			if (s[i]==s1[j]&&ss[j]==0)
			{
				ss[j]=1;
				p=1;
				break;
			}
		}
		if (p==0) 
		{ 
			printf("NO\n");
			break;
		}
	}
    if (p==1) printf("YES\n");
	}
	else printf("NO\n");
}
int judge(char *str1, char *str2,int len1,int len2)
{ int flag[100]={0};
if(len1!=len2)
{
	return 0;
}
for(int i=0;i<len1;i++)
{
	for(int j=0;j<len2;j++)
	{
		if(flag[j]==1)
		{
			continue;
		}
		if(*(str1+i)==*(str2+j))
		{
			flag[j]=1;
			break;
		}
	}
}
int p;
for(p=0;p<len2,flag[p]==1;p++)
{
;
}
if(p==len2)
{
	return 1;
}
else
{
	return 0;
}
}

int main()
{
	char str1[100],str2[100];
	cin>>str1>>str2;
	int len1=strlen(str1),len2=strlen(str2);
	if(judge(str1,str2,len1,len2))
	{
		cout<<"YES";
	}
	else
	{
		cout<<"NO";
	}
	return 0;
}
extern int hash1[500]={0},hash2[500]={0};
void count(char *p,int *t)
{
	int i,l=strlen(p);
	for(i=0;i<l;i++)
		t[p[i]]++;
}
void main()
{
	int i,f=0;
	char s1[100],s2[100];
	scanf("%s %s",s1,s2);
	count(s1,hash1);
	count(s2,hash2);
	for(i=0;i<500;i++)
		if (hash1[i]!=hash2[i]) 
		{
			f=1;break;
		}
	if (f) printf("NO");
	else printf("YES");
}
void main()
{
	int i,j,n,m;
	char a[100],b[100];
	scanf("%s",a);
	scanf("%s",b);
	n=strlen(a);
         m=strlen(b);
         if(m==n)
         {
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
			if(a[i]==b[j])break;
		if(j==n)break;
		else b[j]='&';
	}
	if(i<n)printf("%s\n","NO");
	else printf("%s\n","YES");
         }
         else printf("%s\n","NO");
}
int main()
{
	char str1[100],str2[100],term;
	int i,j,len1,len2,k;
	scanf("%s%s",str1,str2);
	
	len1=strlen(str1);
	len2=strlen(str2);
	if(len1==len2){
    for(j=1;j<=len1;j++)
			for(i=0;i<len1-j;i++)
			{
				if(str1[i]>str1[i+1])
				{
					term=str1[i];
					str1[i]=str1[i+1];
					str1[i+1]=term;
				}
			}
				for(j=1;j<=len2;j++)
					for(i=0;i<len2-j;i++)
					{
				if(str2[i]>str2[i+1])
				{
					term=str2[i];
					str2[i]=str2[i+1];
					str2[i+1]=term;
				}
					}
				    k=0;
					for(i=0;i<len1;i++){
						if((str1[i]-'0')!=(str2[i]-'0'))k=1;}
	}
	if((len1!=len2)||k==1)printf("NO");
	else printf("YES");
}
void main()
{
	char a[100],b[100],temp;
	int i,j,l1,l2,can=1;
	scanf("%s %s",a,b);
	l1=strlen(a);
	l2=strlen(b);
	if(l1!=l2) printf("NO");
	else
	{
		for(i=0;i<l1;i++)
		{
			if(can==1)
			{
				can=0;
				for(j=i;j<l1;j++)
				{
					if(b[j]==a[i]&&can==0) 
					{
						temp=b[i];
						b[i]=b[j];
						b[j]=temp;
						can=1;
					}
				}
			}
		}
		if(can==0) printf("NO");
		else printf("YES");
	}
}
int main(){
	int a[256],n,i,j,c1,c2,c3,c4,k;
	float d;
	char s1[200],s2[200];
	scanf("%s %s",s1,s2);
	memset(a,0,sizeof(a));
	c1=strlen(s1);
	c2=strlen(s2);
	for(i=0;i<c1;i++){
		k=s1[i];
		a[k]++;
	}
	for(i=0;i<c2;i++){
		k=s2[i];
		a[k]--;
	}
	c3=1;
	for(i=0;i<256;i++){
		
		if(a[i]!=0){
			c3=0;
	}
	}
	if(c3){printf("YES");}
	else{printf("NO");}
		
	
		return 0;
}
int main()
{
    char c[100];
    int num=0;
    int a[256]={0},b[256]={0},i,j;
    scanf("%s",c);
    for(i=0;i<strlen(c);i++){
                             a[c[i]]++;
                             }
    scanf("%s",c);
    for(i=0;i<strlen(c);i++){
                             b[c[i]]++;
                             }
    for(i=0;i<256;i++){
                       if(a[i]!=b[i]){
                                      printf("NO\n");
                                      break;
                                      }
    else{
         num++;
         }
    }
    if(num==256){
                 printf("YES\n");
                 }
    

    return 0;
    }
int main()
{
	char a[100],b[100],i,j;
	int ta[24]={0},tb[24]={0};
	cin>>a;
	cin>>b;
	for(i=0;i<=23;i++)
		for(j=0;j<strlen(a);j++)
		{
			if(a[j]=='a'+i)
				ta[i]++;
		}
	for(i=0;i<=23;i++)
		for(j=0;j<strlen(b);j++)
		{
			if(b[j]=='a'+i)
				tb[i]++;
		}
	for(i=0;i<23;i++)
		if(ta[i]!=tb[i])
		{
			cout<<"NO";
			break;
		}
	if(i==23)
		cout<<"YES";
	return 0;
}
void main()
{
	char a[100],b[100];
	char c[52];
	int d[52]={0},e[52]={0};
	int j,i,m,n;
	scanf("%s %s",a,b);
	for(i=0;i<26;i++)
		c[i]=65+i;
	for(i=26;i<52;i++)
		c[i]=71+i;
	
	
	m=strlen(a);n=strlen(b);
	
	for(i=0;i<m;i++)
	{
		for(j=0;j<52;j++)
		if(a[i]==c[j])
			d[j]++;
	}
	
	for(i=0;i<n;i++)
	{
		for(j=0;j<52;j++)
		if(b[i]==c[j])
			e[j]++;
	}
	
	for(i=0;i<52;i++)
	{
		if(d[i]!=e[i])
			break;
	}
	if(i==52)
		printf("YES");
	else
		printf("NO");
}
void main()
{
	char a[300],b[300];
	int sa[128]={0},sb[128]={0};
	int i,j=0,k=1,n;
	scanf("%s %s",a,b);
	if(strlen(a)!=strlen(b))k=0;
	else
		for(i=0;i<strlen(a);i++)
		{
			j=(int)(a[i]);
			n=(int)(b[i]);
			sa[j]=sa[j]+1;
			sb[n]=sb[n]+1;
		}
		for(i=0;i<128;i++)
		{
			if(sa[i]!=sb[i])
			{
				k=0;
				break;
			}
		}
	if(k==0)printf("NO");
	else
		printf("YES");
}
void main()
{
 int m,n;
 int i,j,p,q;

 char str1[100],str2[100],temp;
 scanf("%s%s",str1,str2);
 m=strlen(str1);
 for(i=0;i<m-1;i++)
	 for(j=0;j<m-1-i;j++)
		 if(str1[j]>str1[j+1])
		 {
				temp=str1[j];
				str1[j]=str1[j+1];
				str1[j+1]=temp;
		 }

n=strlen(str2);
for(p=0;p<n-1;p++)
   for(q=0;q<n-1-p;q++)
	   if(str2[q]>str2[q+1])
	   {
		temp=str2[q];
		str2[q]=str2[q+1];
		str2[q+1]=temp;
	   }
	  
 if(strcmp(str1,str2)==0)
	 printf("YES");
 else
	 printf("NO");
 }
void main()
{
 char a[20],b[20];int i,j,c,d;
 scanf("%s%s",a,b);
 c=strlen(a);d=strlen(b);
 if(c!=d)printf("NO");
 else {
for(i=0;a[i]!=0;i++)
 {for(j=0;b[j]!=0;j++)
	   if(a[i]==b[j])
		 { b[j]='0';break;}
	   if(b[j]==0)
	   {printf("NO");break;break;}
 }
 printf("YES");}
}
void main()
{	
	char a[100],b[100];
	unsigned int i,s1[26]={0},s2[26]={0},temp=0;
	scanf("%s %s",a,b);
	if(strlen(a)!=strlen(b))printf("NO");
	else 
	{
	for(i=0;i<strlen(a);i++)
	{
		s1[a[i]-'a']++;
		s2[b[i]-'a']++;
	}
	for(i=0;i<26;i++)
		if(s1[i]==s2[i])temp++;
	if(temp==26)printf("YES");
	else printf("NO");
	}
}
int main()
{
    
    int i,j,amount,n;
    char small[51],big[51];
    scanf("%s%s",small,big);
    n=strlen(small);
    if(strlen(small)==strlen(big)){
       for(i=0;big[i]!='\0';i++){
            for(j=0;small[j]!='\0';j++){
                 if(small[j]==big[i]){
                                       small[j]=small[n-1];
                                       small[n-1]='\0';
                                       n=n-1;

                                        }
                 }
                              
            }
        if(n==0){
                 printf("YES\n"); 
        }else {
              printf("NO\n");
              }
    }else
        printf("NO\n");
    
     return 0;                                        
}
int main()
{
	char a[10],b[10];
	int numa[130]={0},numb[130]={0},i,flag=1;
	scanf("%s %s",&a,&b);
	for(i=0;i<(int)strlen(a);i++)
		numa[a[i]]++;
	for(i=0;i<(int)strlen(b);i++)
		numb[b[i]]++;
	for(i='A';i<'z';i++)
		if(numa[i]!=numb[i])
		{
			flag=0;
			break;
		}
		if(flag)
			printf("YES");
		else printf("NO");
		return 0;
}
int main()
{
	int i,j,l;
	char s1[100],s2[100],t;
	scanf("%s %s",s1,s2);
	l=strlen(s1);
	for(j=0;j<l-1;j++)
	{
		for(i=0;i<l-1-j;i++)
		{
			if(s1[i]>s1[i+1])
			{
				t=s1[i];s1[i]=s1[i+1];s1[i+1]=t;
			}
		}
	}
	for(j=0;j<l-1;j++)
	{
		for(i=0;i<l-1-j;i++)
		{
			if(s2[i]>s2[i+1])
			{
				t=s2[i];s2[i]=s2[i+1];s2[i+1]=t;
			}
		}
	}
	if(strcmp(s1,s2)==0)
	{
		printf("YES");
	}
	else
	{
		printf("NO");
	}
	return 0;
}
int main(){
	char w[2000];//??
	char s[2000];
	char m;
	int i,k;
	scanf("%s %s",s,w);
	if (strlen(s)==strlen(w))
	{
		for (i=0;s[i]!='\0';i++)
		{
			for(k=i;w[k]!='\0';k++)
			{
				if (s[i]==w[k])
				{
					m=w[k];
					w[k]=w[i];
					w[i]=m;
					break;
				} 		
			}
		}
		if (strcmp(s,w)==0)
		{
			printf("YES");
		} 
		else
		{
			printf("NO");
		}

	} 
	else
	{
		printf("NO");
	}
	return 0;
}
void main()
{
	char a[2][100];
	int i,j,k;
	int l[2];
	int b=0;
	char temp;

	scanf("%s %s",a[0],a[1]);
	l[0]=strlen(a[0]);
	l[1]=strlen(a[1]);
	if (l[0]!=l[1])
		b=1;
	else
	{
		for(k=0;k<2;k++)
		{
			for (i=0;i<l[k]-1;i++)
			{
				for (j=0;j<l[k]-i;j++)
				{
					if (a[k][j]<a[k][j+1])
					{
						temp=a[k][j];
						a[k][j]=a[k][j+1];
						a[k][j+1]=temp;
					}
				}
			}
		}
		if (strcmp(a[0],a[1])==0)
			b=0;
		else
			b=1;
	}
	if (b==0)
		printf("YES");
	else
		printf("NO");
}
void main()
{
    int i,l1,l2;
    int a[60]={0},b[60]={0};
    char m[100],n[100];
    scanf("%s%s",m,n);
    l1=strlen(m);
    l2=strlen(n);
    if(l1!=l2) printf("NO");
    else
    {
   for(i=0;i<l1;i++)
    {
    	if(m[i]>='A'&&m[i]<='Z') a[m[i]-'A'+26]++;
    	else a[m[i]-'a']++;
    	if(n[i]>='A'&&n[i]<='Z') b[n[i]-'A'+26]++;
    	else b[n[i]-'a']++;	
    	
    	
    	
    }
    for(i=0;i<52;i++)
    {
    	if(b[i]!=a[i]) break;
    }
    if(i==52) printf("YES");
    else printf("NO");
    }
}
void main()
{
	char a[100],b[100];
	int flag=0,i,j,len,c[100]={'0'};
	scanf("%s%s",a,b);
	len=strlen(a);
	if(strlen(a)!=strlen(b))
		printf("NO");
	else
	{
		for(i=0;i<len;i++)
		{
			for(j=0;j<len;j++)
			{
				if(c[j]==0)
				{
					if(a[i]==b[j])
					{
						c[j]=1;
						break;
					}
				}
			}
		}
		for(j=0;j<len;j++)
		{if(c[j]==0) flag=1;}
		if(flag)
			printf("NO");
		else
			printf("YES");

	}


}
int main()
{
	static char a[100],b[100];
	int i,j,k=1;
	scanf("%s%s",a,b);
	for(i=0;a[i]!=0;i++)
	{
		for(j=0;b[j]!=0;j++)
		if(b[j]==a[i])
		{
			b[j]=1;
			break;
			}
		if(b[j]==0)
		{k=0;break;}
		}
	for(j=0;b[j]!=0;j++)
		if(b[j]!=1)
		k=0;
	if(k)
	printf("YES");
	else printf("NO");
}
int main(){
  int a,b,c,k,i,j;
  char p[100],q[100];
  scanf("%s %s",p,q);
  a=strlen(p);
  b=strlen(q);
  if(a==b){
    for(i=0;i<a;i++){
      k=1;
      for(j=0;j<a-i;j++){
        if(p[i]==q[j]){
          k=0;
          for(c=j;c<a-i;c++)
          q[c]=q[c+1];
          break;
          }
          }
      if(k==1)
      break;
      }
    if(k==1)
    printf("NO");
    if(k==0)
    printf("YES");
    }
  else
    printf("NO");
    
  }
void main()
{
	char a[100],b[100];
	int i,j,m,n,t=0,r=0;
	scanf("%s",a);
	scanf("%s",b);
	m=strlen(a);
	n=strlen(b);
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			if(a[i]==b[j])
			{
				b[j]=0;
				a[i]=1;
				t++;
				r++;
			}
		}
	}
	
	if(t==n&&r==m)
		printf("YES");
	else printf("NO");
}
void main()
{
	char str1[300],str2[300];
	int i,len1,len2,flag=0;
	void rank(char str[300]);
	scanf("%s %s",str1,str2);
	rank(str1);
	rank(str2);
	len1=strlen(str1);
	len2=strlen(str2);
	if(len1!=len2)
		printf("NO\n");
	else
	{
		for(i=0;i<len1;i++)
			if(str1[i]!=str2[i])
			{
				flag++;
				break;
			}
	
	if(flag==0)
		printf("YES\n");
	else
		printf("NO\n");
	}
}
void rank(char str[300])
{
	char t;
	int i,j,len;
	len=strlen(str);
	for(i=0;i<len-1;i++)
		for(j=i+1;j<len;j++)
			if(str[i]<str[j])
			{
				t=str[i];
				str[i]=str[j];
				str[j]=t;
			}
}
int main()
{
	int c[128], i;
	char str1[N], str2[N];
	memset(c, 0, sizeof(c));
	cin >> str1;
	int len1 = strlen(str1);
	for(i = 0; i < len1; i++)
		c[str1[i]]++;
	cin >> str2;
	int len2 = strlen(str2);
	for(i = 0; i < len2; i++)
		c[str2[i]]--;
	for(i = 0; i < 128; i++)
		if(c[i] != 0)
		{
			cout << "NO" << endl;
			return 0;
		}
	cout << "YES" << endl;
	return 0;
}
int main()
{
	int i,j,n1,n2,count=0,k,k2;
	char str1[100],str2[100];
	cin>>str1>>str2;
	n1=strlen(str1);
	n2=strlen(str2);
	int num1[26]={0},num2[26]={0};
for(i=0;i<26;i++)
{
	for(k=0;k<n1;k++)
	if(str1[k]=='a'+i)
		num1[i]++;
	for(k2=0;k2<n2;k2++)
	if(str2[k2]=='a'+i)
		num2[i]++;
}
for(j=0;j<26;j++)
{
	if(num1[j]==num2[j])
		count++;
}
if(count==26)
	cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
int main()
{
	char str[5],s[1000][1000];
	char c;
	int n,i,j,k=0;
	gets(str);
	n=strlen(str);
	if(n%2==0)
		printf("NO\n");
	else 
	{
		if(str[(n-1)/2]!=' ')
			printf("NO\n");
		else
		{
			for(i=0;i<2;i++)
			{
				for(j=0;str[k]!=' ';j++)
				{
					if(str[k]!='\0')
					{
						s[i][j]=str[k];
						k++;
					}
					else break;
				}
				s[i][j]='\0';
				if(str[k]='\0')
					break;
				k++;
			}
		}
		 for(i=0;i<2;i++)
		 {
			 for(k=0;k<(n-3)/2;k++)
			 for(j=0;j<(n-3)/2-k;j++)
			 {
				 if(s[i][j]>s[i][j+1])
				 {
					 c=s[i][j];
					 s[i][j]=s[i][j+1];
					 s[i][j+1]=c;
				 }
			 }
		 }
		 if(strcmp(s[0],s[1])==0)
			 printf("YES\n");
		 else 
			 printf("NO\n");
	}
}
int main()
{
	int i,j,n;
	char a[100]={0},b[100]={0};
	scanf("%s %s",a,b);
	if(strlen(a)!=strlen(b))printf("NO");
	else
	{
	n=strlen(a);	
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		if(a[i]==b[j]){a[i]='1';b[j]='1';break;}
	}
	if(!strcmp(a,b))printf("YES");
	else printf("NO");
	}
	return 0;
}
int main(int argc, char* argv[])
{
	int ALPHA1[27],alpha1[27],ALPHA2[27],alpha2[27],len1,len2,j,i,flag;
	char str1[100],str2[100];
	for(i=0;i<26;i++)
	{
		alpha1[i]=0;
		ALPHA1[i]=0;
		alpha2[i]=0;
		ALPHA2[i]=0;
	}
	scanf("%s %s",str1,str2);
	len1=strlen(str1);
	len2=strlen(str2);
	for(j=0;j<len1;j++)
	{
		for(i=0;i<26;i++)
		{
			if(str1[j]-'a'==i)
				alpha1[i]++;
			if(str1[j]-'A'==i)
				ALPHA1[i]++;
		}
	}
	for(j=0;j<len2;j++)
	{
		for(i=0;i<26;i++)
		{
			if(str2[j]-'a'==i)
				alpha2[i]++;
			if(str2[j]-'A'==i)
				ALPHA2[i]++;
		}
	}

	flag=0;
	for(i=0;i<26;i++)
	{
		if(alpha1[i]==alpha2[i]&&ALPHA1[i]==ALPHA2[i])
			flag=1;
		else
		{
			flag=0;
			break;
		}
	}
	if(1==flag)
		printf("YES\n");
	else
		printf("NO\n");

	return 0;
}
// zuoye.cpp : ??????????????

int main()
{
	char a[100];
	char b[100];
	cin>>a;
	cin>>b;
	int len1,len2;
	len1=strlen(a);
	len2=strlen(b);
	if(len1!=len2) 
	{
		cout<<"NO";
		return 0;
	}
	for(int i=0;i<len1-1;i++)
		for(int j=0;j<len1-1-i;j++)
		{
			if(a[j]>a[j+1])
			{
				char t;
				t=a[j+1];
				a[j+1]=a[j];
				a[j]=t;
			}
		}
		for(int i=0;i<len1-1;i++)
			for(int j=0;j<len1-1-i;j++)
			{
				if(b[j]>b[j+1])
				{
					char t;
					t=b[j+1];
					b[j+1]=b[j];
					b[j]=t;
				}
			}
	if(!strcmp(a,b)) cout<<"YES";
	else cout<<"NO";

	return 0;
	
}
int main()
{
   int length,length1,length2;
   char a[50],b[50];
   int sum=0;
   int n=0;
   int i,j;
   scanf("%s",a);
   scanf("%s",b);
   length1=strlen(a);
   length2=strlen(b);
   if(length1!=length2)
   {
       printf("NO");
   }
   else
   {
       length=length1;
   for(i=0;i<length;i++)
   {
       for(j=0;j<length;j++)
       {
           if(a[i]==b[j])
           {n++;
           b[j]='0';
           break;
           }
        }
        sum++;
   }
    if(n==sum)
   {
       printf("YES");
   }
   else
   {
       printf("NO");
   }
   }
    return 0;
}
/*
2011 01 07 ??

????????????????????????????????????????
????
???????????????????????????
????
???????????????????YES? 
????NO???YES?NO???????

?? 1000012760
*/


int main(){
	char a[100], b[100];
	int la= 0, lb= 0, same= 1, i= 0, j= 0, aused[100]= {0}, bused[100]= {0};

	cin>>a>>b;

	la= strlen(a);
	lb= strlen(b);

	if(la!= lb)
		cout<<"NO"<<endl;
	else{
		for(i= 0; i< la; i++){
			for(j= 0; j< lb; j++){
				if(a[i]== b[j] && bused[j]== 0){
					bused[j]= 1;
					aused[i]= 1;
					break;
				}
			}
			if(aused[i]== 0){
				cout<<"NO"<<endl;
				return 0;
			}
		}
		for(i= 0; i< lb; i++){
			if(bused[i]== 0){
				cout<<"NO"<<endl;
				return 0;
			}
		}
		cout<<"YES"<<endl;
	}
	return 0;
}
int main()
{
 char a[200],b[200];
 int m[100],n[100],k,l,i,j,e=0;
 scanf("%s %s",a,b);
 k=strlen(a);
 l=strlen(b);
 if(k!=l)
 {
  printf ("NO");
  } 
  if(k==l)
  {
   for(i=0; i<k; i++)
   {
    for(j=0; j<k; j++)
    {
     if(a[i]==b[j])
     {
      b[j]=1;
      e++;
      break;
      }
     }
    }
    if(e==k)
    {
     printf ("YES");
     }
    else
    printf ("NO");
  }
return 0;
}
int main()
{
	char ch[100],sh[100];
	int a[300]={0},b[300]={0};
	int len1,len2;
	scanf("%s %s",&ch,&sh);
	int i,j;
	len1=strlen(ch);
	len2=strlen(sh);
	if(len1!=len2){
		printf("NO\n");
	}else{
	for(i=0;i<=len1;i++){
		int m;
		m=ch[i];
		a[m]++;
	}
	for(j=0;j<=len2;j++){
		int n;
		n=sh[j];
		b[n]++;
	}
	int k,h=0;
	for(k=0;k<=299;k++){
		if(a[k]!=b[k]){
			printf("NO\n");
			break;
		}else{
			h++;
		}
	}
		if(h==300)
			printf("YES\n");
	}
	return 0;
}
void main()
{
	char a[50],b[50],c;
	int i,j=0,l1,l2;
	scanf("%s%s",a,b);
	l1=strlen(a);l2=strlen(b);
	if(l1!=l2)printf("NO");
	else if(l1==l2)
	{
	for(j=0;j<l1;j++)
		for(i=j;i<l2;i++)
	{   
		if(a[j]==b[i])
		{c=b[i];
		b[i]=b[j];
		b[j]=c;  
		}
		
	
		
	}
	if(strcmp(a,b)==0)
		printf("YES");
	else printf("NO");
	}
}
int main()
{
	char a[20], b[20];
	int a_, b_, isbreak=0, i, j;
	scanf("%s%s", a, b);
	a_ = strlen(a);
	b_ = strlen(b);
	if(a_!=b_)
		printf("NO\n");
	else
	{
	for(i=0; i<a_; i++)
	{
		for(j=0; j<b_; j++)
		{
			if(b[i]==a[j])
			{
				a[j]='0';
				break;
			}
			if(j==b_-1)
			{
				isbreak=1;
				break;
			}
		}
		if(isbreak==1)
			break;
	}
	if(isbreak==1)
		printf("NO\n");
	else
		printf("YES\n");
	}
	return 0;
}
void change(char x[])
{
	int i,j,l;
	char c;
	l=strlen(x);
	for(i=0;i<l-1;i++)
	{
		for(j=i+1;j<l;j++)
		{
			if(x[i]>x[j]) { c=x[i]; x[i]=x[j]; x[j]=c; }
		}
	}
}
void main()
{
	int d;
	char a[101]={'\0'},b[101]={'\0'};
	scanf("%s%s",a,b);
	change(a);
	change(b);
	if((d=strcmp(a,b))==0) printf("YES");
	else printf("NO");
}
void main()
{
	int n,m,i,j;
	char a[100],b[100];
	scanf("%s%s",a,b);
	n=strlen(a);
	m=strlen(b);
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			if(a[i]==b[j])
			{
				a[i]='1';
				b[j]='2';
			}
	}
	for(i=0;i<=m;i++)
		if(b[i]!='2')
			break;
	for(j=0;j<=n;j++)
		if(a[j]!='1')
			break;
		
		if(i==m&&j==n)
			printf("YES");
		else
			printf("NO");
	
}
int main()
{
    char a[100],b[100],t;
    scanf("%s %s",a,b);
    int i,j,la=strlen(a),lb=strlen(b);
    if(la!=lb)printf("NO");
    else{
    	for(i=0;i<la;i++)
        	for(j=0;j<la;j++){
				if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}
            	if(b[i]>b[j]){t=b[i];b[i]=b[j];b[j]=t;}
        	}
    if(strcmp(a,b))printf("NO");
    else printf("YES");
	}
	return 0;
}
void main()
{
	char a[100],b[100],c[100],d[100],t;
	int i,j,k,n,m,l;
	scanf("%s",a);
	scanf("%s",b);
	n=strlen(a);
	m=strlen(b);
	for(i=0;i<n;i++)
	for(j=0;j<n-i;j++)
		if(a[j]<a[j+1])
		{
             t=a[j];
			 a[j]=a[j+1];
			 a[j+1]=t;
		}
	for(i=0;i<n;i++)
	for(j=0;j<n-i;j++)
		if(b[j]<b[j+1])
		{
             t=b[j];
			 b[j]=b[j+1];
			 b[j+1]=t;
		}
	if(strcmp(a,b)==0)
		printf("YES");
	else printf("NO");
}
void main()
{
	char a[100],b[100];
	int ans,e,lena,lenb,k,i;
	scanf("%s%s",a,b);
	lena=strlen(a);
	lenb=strlen(b);
	if(lena!=lenb)
		printf("NO");
	else
	{
		for(k=1;k<lena;k++)
		{
			for(i=0;i<lena-k;i++)
			{
				if(a[i]>a[i+1])
				{
					e=a[i+1];
					a[i+1]=a[i];
					a[i]=e;
				}
			}
		}
		for(k=1;k<lenb;k++)
		{
			for(i=0;i<lenb-k;i++)
			{
				if(b[i]>b[i+1])
				{
					e=b[i+1];
					b[i+1]=b[i];
					b[i]=e;
				}
			}
		}
		ans=strcmp(a,b);
		if(ans==0)
			printf("YES");
		else
			printf("NO");
	}
}