semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
void main()
{
	int g(int a[],int b[],int n);
	void f(char a[],int b[]);
	int c[26]={0},d[26]={0};
	char a[100],b[100];
	scanf("%s%s",a,b);
	f(a,c);
	f(b,d);
	if(g(c,d,0)==1) printf("YES\n");
	else printf("NO\n");
}
int g(int a[],int b[],int n)
{
	if(n==25) 
	{
		if(a[25]==b[25]) return(1);
		else return(0);
	}
	else 
	{
		if(a[n]==b[n]) return(g(a,b,n+1));
		else return(0);
	}
}
void f(char a[],int b[])
{
	int i,p;
	p=strlen(a);
	for(i=0;i<p;i++) 
		b[a[i]-'a']++;
}
void main() 
{
    char p[1000],q[1000];
    int a[128]={0},b[128]={0};
    int i,j,n,m,t=0;
    scanf("%s%s",p,q);
    n=strlen(p);
    m=strlen(q);
    for(i=0;i<n;i++)
       a[p[i]]++;
    for(i=0;i<m;i++)
       b[q[i]]++;
    for(i=0;i<128;i++)
       if(a[i]!=b[i]) {t=1;break;} 
    if(t==0) printf("YES\n");
    else printf("NO\n");
}
int main()
{
     int acc[256] = { 0 };
     int count = 0, len = 0;
     char s1[201], s2[201];
     char* p = NULL;

     scanf("%s%s", s1, s2);
     for (p = s1; *p; p++) {
          acc[(int)*p]++;
          count++;
          len++;
     }
     for (p = s2; *p; p++) {
          if (acc[(int)*p] > 0) {
               acc[(int)*p]--;
               count--;
          }
          len--;
     }
     printf("%s\n", (len == 0 && count == 0) ? "YES" : "NO");
     return 0;
}
void sort(char str[])
{
	int i,j;
	char swap;
	for (i=0;i<=strlen(str)-2;i++)
		for (j=0;j<=strlen(str)-2-i;j++)
			if (str[j]>str[j+1])
			{
				swap=str[j];
				str[j]=str[j+1];
				str[j+1]=swap;
			}
}
void main()
{
	char a[50],b[50];
	int flag,i;

	scanf("%s%s",&a,&b);
	sort(a);
	sort(b);
	flag=1;
	for (i=0;i<=strlen(a);i++)
		if (a[i]!=b[i])
		{
			flag=0;
			break;
		}
	if (flag) printf("YES");
	else printf("NO");
}
int main()
{
	char a[10000],b[10000];
	int l1,l2,l,i,j,t[10000],z;
	scanf("%s",a);
	scanf("%s",b);
    l1=strlen(a);
	l2=strlen(b);
	l=0;
	z=0;
	if (l1==l2) l=l1;
	else{
		printf("NO\n");
		z=1;
	}
	for (i=0;i<l;i++){
		t[i]=0;
		for (j=0;j<l;j++)
			if (a[i]==b[j]){
				t[i]=1;
				b[j]=0;
				break;
				
			}
			if (t[i]==0){
                z=1;
				printf("NO\n");
				break;
			}
	}
    if (z!=1) printf("YES\n");
	return 0;
}
void main()
{
	void sort(char a[],int n);
	int m,n;
	char a[100],b[100];
	scanf("%s %s",a,b);
	m=strlen(a);
	n=strlen(b);
	sort(a,m);
	sort(b,n);
	if(strcmp(a,b)==0) printf("YES");
	else printf("NO");
}
void sort(char a[],int n)
{
	int i,j,k;
	char temp;
	for(i=0;i<n;i++)
	{ k=i;
	for(j=i+1;j<n;j++)
		if(a[k]>a[j]) k=j;
		if(k!=i)
		{
			temp=a[i];
			a[i]=a[k];
			a[k]=temp;
		}
	}
}
void main()
{
  int l,r=0;
  char *p,*q,a[100],b[100];
  scanf("%s %s",a,b);
  if(strlen(a)!=strlen(b)) printf("NO");
  else
  {
    l=strlen(a);
    for(p=a;p<a+l;p++)
    {
      for(q=b;q<b+l;q++)
      {
        if(*p==*q)
        {
          r++;
          *q=0;
          break;
        }
      }
    }
    if(r==l) printf("YES");
    else printf("NO");
  }
}
int deal(char a[],int n,char b[],int m)
{
	char c;
	char az[100],bz[100];
	int i,j,t;
	for(j=0;j<100;j++)
		{
			az[j]='\0';
			bz[j]='\0';
		}
	for(i=0,j=0;i<n;i++)
	{
		if(a[i]==' '||a[i]=='\n') continue;
		else if(a[i]<='Z'&&a[i]>='A') {az[j]=a[i]+32;j++;}
		else {az[j]=a[i];j++;}
	}
	for(i=0;i<j;i++)
	{
		for(t=0;t<j-1-i;t++)
			if(az[t]>az[t+1])
		{
			c=az[t];
			az[t]=az[t+1];
			az[t+1]=c;
		}
	}
	for(i=0,j=0;i<n;i++)
	{
		if(b[i]==' ') continue;
		else if(b[i]<='Z'&&a[i]>='A') {bz[j]=b[i]+32;j++;}
		else {bz[j]=b[i];j++;}
	}
	for(i=0;i<j;i++)
	{
		for(t=0;t<j-1-i;t++)
			if(bz[t]>bz[t+1])
		{
			c=bz[t];
			bz[t]=bz[t+1];
			bz[t+1]=c;
		}
	}
	if(strcmp(az,bz)==0) return(1);
	else return(0);
}

void main()
{
	int la,lb;
	char a[100],b[100];
	scanf("%s%s",a,b);
	la=strlen(a);
	lb=strlen(b);
	if(la!=lb) printf("NO\n");
	else if(deal(a,la,b,lb)) printf("YES\n");
	else printf("NO\n");
}
void main()
{
	void swap(char str[]);
	char a[100],b[100];
	int len1,len2;
	scanf("%s %s",a,b);
	len1=strlen(a);
	len2=strlen(b);
	if(len1!=len2)
		printf("NO");
	else
	{
		swap(a);
		swap(b);
		if(strcmp(a,b)==0)
			printf("YES");
		else
			printf("NO");
	}
}

void swap(char str[])
{
	int length,i,j;
	char t;
	length=strlen(str);
	for(i=0;i<length-1;i++)
		for(j=0;j<length-1-i;j++)
		{
			if(str[j+1]>str[j])
			{
				t=str[j];
				str[j]=str[j+1];
				str[j+1]=t;
			}
		}
}
int main()
{
	char s1[100]={0},s2[100]={100};
	int len1,len2,i,j,f[100]={0},flag;
	scanf("%s%s",s1,s2);
	len1=strlen(s1);
	len2=strlen(s2);
	if(len1!=len2)
	{
		printf("NO");
		return 0;
	}
	for(i=0;i<len1;i++)
	{
		flag=0;
		for(j=0;j<len2;j++)
		{
			if(s2[j]==s1[i] && f[j]==0)
			{
				f[j]=1;
				flag=1;
				break;
			}
		}
		if(flag==0)
		{
			printf("NO");
			return 0;
		}
	}
	printf("YES\n");
	return 0;
}
int main()
{
	char ch1[205],ch2[205],ch[205];
	int i,k=0,m,n,j,a,b=0,c=0;
    gets(ch);
	m=strlen(ch);
	n=m/2;
	for(i=0;i<n;i++)
		ch1[i]=ch[i];
	for(i=n+1;i<m;i++)
	{	
		ch2[k]=ch[i];
		k++;
	}
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{
			if(ch1[i]<ch1[j])
			{
				a=ch1[i];
				ch1[i]=ch1[j];
				ch1[j]=a;
			}
		}
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{
			if(ch2[i]<ch2[j])
			{
				a=ch2[i];
				ch2[i]=ch2[j];
				ch2[j]=a;
			}
		}
    for(i=0;i<n;i++)
	{	
		if(ch1[i]==ch2[i])
			b++;
		else
			c++;
	}
	if(b==n)
		printf("YES\n");
	else
		printf("NO\n");
	return 0;
}
int main()
{
  char a[500],b[500];
  int i;
  for(i=0;i<=499;i++)
  {
    a[i]='\0';
    b[i]='\0';
  }
  scanf("%s %s",a,b);
  if(strlen(a)==strlen(b))
  {
    int j;
    for(i=0;a[i]!='\0';i++)
    {
      for(j=0;j<500;j++)
        {
          if(a[i]==b[j])
          {
            b[j]='\0';
            break;
           }
         }
     }
   if(strlen(b)==0)
   printf("YES");
   else printf("NO");
  }
  else printf("NO");
return 0;
}
void main()
{
	char a[20],b[20],c[20]={""},*p;
	int l1,l2,l,i,j;
	scanf("%s",a);
	scanf("%s",b);
	p=c;
	l1=strlen(a);
	l2=strlen(b);
	l=l1;
	if(l1!=l2)
	printf("NO");
	else
	{
		for(i=0;i<l;i++)
		{
			for(j=0;j<l;j++)
				if(a[i]==b[j])
					*(p+i)=a[i];
		}
		if(strcmp(a,c)==0)
			printf("YES");
		else
			printf("NO");
	}
}
void main(){
int t,n,i,l,j,m,k,x;
char s[800],a[500],b[500];
gets(s);
for(i=0;s[i]!=' ';i++){
a[i]=s[i];
}
a[i]='\0';
i++;
for(j=0;s[j+i]!='\0';j++){
b[j]=s[j+i];
}
b[j]='\0';
t=0;
if(i-1==j){
for(k=0;a[k]!='\0';k++){
	for(l=0;b[l]!='\0';l++){
	x=0;
	  if(a[k]==b[l]){
	  b[l]=' ';
	  x=1;
	  break;
	  }
	}
	if(x==0){
		printf("NO");
		break;
	}
if(a[k+1]=='\0')printf("YES");
  }
}else{
	printf("NO");
}
}
int main()
{
	char str1[100], str2[100];
	int sum = 0, len1, len2, i, j;
	cin >> str1 >> str2;
	len1 = strlen(str1);
	len2 = strlen(str2);
	if (len1 != len2)
	{
		cout << "NO" << endl;
		return 0;
	}
	else
	{
		for (i = 0; i < len1; i++)
		{
			for (j = 0; j < len1; j++)
			{
				if (str2[j] == str1[i])
				{
					str2[j] = 0;
					sum++;
					break;
				}
			}
		}
		if (sum == len1)
			cout << "YES" << endl;
		else 
			cout << "NO" << endl;
	}
	return 0;
}
void main()
{
	char a[10],b[10];
	int i,j;
	char m;
	scanf("%s %s",a,b);
	for(i=0;i<10;i++)
	{
		for(j=i;j<10;j++)
		{
			if(b[j]==a[i])
			{
				if(a[i]=='\0')
					break;
				m=b[i];
				b[i]=b[j];
				b[j]=m;
			}
		}
	}
	if(strcmp(a,b)!=0)
		printf("NO");
	else
		printf("YES");
}
void main()
{
char c[10],b[10];
int i,j,n,k,m;
scanf("%s %s",c,b);
n=strlen(c);
m=strlen(b);
if(m==n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(c[i]!=' '&&b[j]!=' ')
{
if(c[i]==b[j])
c[i]=b[j]=' ';
}
}
}
for(i=0;i<n;i++)
{
if(c[i]!=' '||b[i]!=' ')
{
printf("NO");
break;
}
}
if(i==n)
printf("YES");
}
else
printf("NO");
}
void pai(char a[]);
int main(int argc, char *argv[])
{char a[100],b[100];
scanf("%s%s",a,b);
pai(a);
pai(b);
if(strcmp(a,b)==0)
printf("YES");
else
printf("NO");
    return 0;
}

void pai(char a[])
{int i,b,j;
for(i=0;i<=strlen(a)-1;i++)
{
                           for(j=i+1;j<=strlen(a)-1;j++)
                           if(a[i]>a[j])
                           {b=a[i];a[i]=a[j];a[j]=b;}
}
}
int  main()
{
	char a[100];
	int i,x;
	gets(a);
	x=strlen(a);
	if (x%2==0)
	printf("NO\n");
	else
	{
		for (i=0;i<x;i++)
		{
			int k=0,j;
			for (j=0;j<x;j++)
			{
				if (a[j]==a[i]&&a[j]!=' ')
				k++;
			}
			if (k%2!=0)
			{
				printf("NO\n");
				return 0;
			}
		}
		printf("YES\n");
	}
}
char s1[10] = {'\0'},s2[10]={'\0'};
char out[10] = {'\0'};
int used[10] ={0},length=0,x=0,sum=0;
void ranker(int n)
{
	for (int i=0;i<length;i++)
	{
		if (!used[i])
		{
			out[n]=s1[i];
			used[i]=1;
			ranker(n+1);
			used[i] = 0;
		}
	}
	if (n==length-1) 
	{
		if (strcmp(out,s2)==0)
			x=1;
		else
			x=0;
		sum=sum+x;
	}
}
int main()
{
	cin>>s1>>s2;						//???????
	int i;
	for (i=0;i<10;i++)
		if (s1[i]!='\0')
			length++;
	ranker(0);							//????????
	if (sum!=0)
		cout<<"YES"<<endl;
	else
		cout<<"NO"<<endl;
	return 0;
}
int mycompare(const void *c1,const void *c2)
{
	char *p1=(char*)c1,*p2=(char*)c2;
	return (*p1-*p2);
}
int main()
{
	char a[NUM]={0},b[NUM]={0};
	scanf("%s%s",a,b);
	qsort(a,strlen(a),sizeof(char),mycompare);
	qsort(b,strlen(b),sizeof(char),mycompare);
	if(strcmp(a,b)!=0)
		printf("NO");
	else	
		printf("YES");
	return 0;
}
int order(char *x,int l)
{
	if(l==1)	return 0;
	int i,y;
	for(i=0;i<l-1;i++)
	{
		if(*(x+i)>*(x+i+1))
		{
			y=*(x+i);
			*(x+i)=*(x+i+1);
			*(x+i+1)=y;
		}
	}
	return order(x,l-1);
}

int main()
{
	char x[300]={0},y[300]={0},c;
	char *px,*py;
	int i,lx,ly;
	px=x;py=y;
	for(i=0;(c=getchar())!=' ';i++)
	{
		x[i]=c;
	}
	lx=i;
	for(i=0;(c=getchar())!='\n';i++)
	{
		y[i]=c;
	}
	ly=i;
	order(px,lx);
	order(py,ly);
	for(i=0;i<lx||i<ly;i++)
	{
		if(x[i]!=y[i])
		{
			printf("NO\n");
			return 0;
		}
	}
	printf("YES\n");
	return 0;
}
void main()
{char a[20],b[20];
 int i,m,n,j,s=0,t=0,k=0;
 for(i=0;i<=19;i++)
  {scanf("%c",&a[i]);
   if(a[i]==' ')
    {a[i]=0;
     break;}
   }
 gets(b);
 m=strlen(a);
 n=strlen(b);
 if(m!=n)
 printf("NO");
 else
{for(i='a';i<='z';i++)
  {for(j=0;j<m;j++)
    {if(a[j]==i)
      s=s+1;
     }
   for(j=0;j<n;j++)
     {if(b[j]==i)
      t=t+1;}
   if(s!=t)
     {printf("N0");
      k=1;
      break;}}
 if(k==0)
 printf("YES");}
}
void main()
{ char  s1[10],s2[10];int  a[128],b[128];
  int i,j,n,m;
  scanf("%s %s",s1,s2);
  m=strlen(s1);n=strlen(s2);
  if(m!=n) printf("NO");
   else
         {for(i=0;i<128;i++)
             { a[i]=0;b[i]=0;
               for(j=0;j<m;j++)
                  {if(i==s1[j])  a[i]++;
                  if(i==s2[j])  b[i]++;}
                  if(a[i]!=b[i])  break;  }
        if(i<127)  printf("NO");
       else if(a[127]!=b[127])  printf("NO");
        else printf("YES");}}
int main()
{
 	char zfc1[100],zfc2[100];
 	int i,l1,l2,x=0;
 	scanf("%s %s",zfc1,zfc2);
 	l1=strlen(zfc1);
 	l2=strlen(zfc2);
 	if(l1!=l2){
			printf("NO");
			}
	else{
		for(i=0;i<l1;i++){
			x=x+(int)zfc1[i]-(int)zfc2[i];
			}
		if(x==0) printf("YES");
		else printf("NO");
		}
 	
    return 0;
}
void main()
{
  void sort(char array[],int n);
  char str1[100],str2[100];
  int i,j,l1,l2,temp;
  scanf("%s %s",str1,str2);
  l1=strlen(str1);
  l2=strlen(str2);
  sort(str1,l1);
  sort(str2,l2);
  if(strcmp(str1,str2)==0)
  printf("YES");
  else printf("NO");
}
 void sort(char array[],int n)
{
  int i,j;
  char ch;
  for(i=0;i<n-1;i++)
  for(j=i+1;j<n;j++)
  {
    if(array[i]>array[j])
    {
      ch=array[i];
      array[i]=array[j];
      array[j]=ch;
     }
   }
}
/*
 * ??????.cpp
 *
 *  Created on: 2010-12-31
 *      Author: ???
 */
int main()
{
	int n,lena,lenb,i,j;
	char a[1001],b[1001];
	cin>>a>>b;
	lena=strlen(a);
	lenb=strlen(b);
	n=0;
	if (lena==lenb)
	{
		for (i=0;i<lena;i++)
			for (j=0;j<lena;j++)
			{
				if (a[i]==b[j])
				{
					n=n+1;
					b[j]='\0';
					break;
				}
			}
		if (n==lena)
			cout<<"YES";
		else
			cout<<"NO";
	}
	else cout<<"NO"<<endl;
	return 0;
}
int main()
{
	char a[100],b[100],c;
	int n1,n2,i,j;
	scanf("%s%s",a,b);
	n1=strlen(a);
	n2=strlen(b);
	if(n1!=n2) printf("NO");
	else{
	for(i=0;i<n1-1;i++)
	{
		if(b[i]!=a[i])
		{
		for(j=i+1;j<n1;j++)
		{
			if(b[j]==a[i])
			{c=b[i];b[i]=b[j];b[j]=c;break;}
		}
		}
	}
	if(b[n1-1]==a[n1-1]) printf("YES");
	else printf("NO");
	}
	return 0;
}
int compare(const void* a,const void* b)
{
	return*(char*)b-*(char*)a;
}
void main()
{
	int i;
	char a[100],b[100];
	scanf("%s %s",a,b);
int la= strlen(a);
int lb= strlen(b);
	if(la!=lb)
	{
		printf("NO");
	}
	else
	{
        qsort(a,la,sizeof(char),compare);
	    qsort(b,lb,sizeof(char),compare);
	    for(i=0;i<strlen(a);i++)
		{
		    if(a[i]!=b[i])
		    	break;
		}
    	if(i==strlen(a))
	    	printf("YES");
    	else
		    printf("NO");
	}
}
void count(int a[53], char str[], int len)
{
	int i,m;
	for(i=0;i<=len-1;i++)
	{
		m=str[i];
		a[m]++;
	}
}

int main()
{
	int a1[200]={0},a2[200]={0};
	int len1,len2,t=1,i;
	char str1[1000]={0},str2[1000]={0};
	scanf("%s",str1);
	scanf("%s",str2);
	len1=strlen(str1);
	len2=strlen(str2);
	count(a1,str1,len1);
	count(a2,str2,len2);
	for(i=1;i<=199;i++)
	{
		if(a1[i]!=a2[i]) t=0;
	}
	if(t==1)
		printf("YES\n");
	else if(t==0)
		printf("NO\n");
	return 0;
}
int main(){
	int i=0,j=0,t;
	int count=0;
	int num1,num2;
	char a[1000];
	char b[1100];
	scanf("%s %s",a,b);
	while(a[i]!='\0'){
		i++;
	}
	num1=i;
	i=0;
	while(b[i]!='\0'){
		i++;
	}
	num2=i;
	i=0;
	if(num1!=num2){
		printf("NO");
	}else{
		for(i=1;i<=num1;i++){
			for(j=0;j<num1-i;j++){
				if(a[j]>a[j+1]){
					t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}
				if(b[j]>b[j+1]){
					t=b[j];
					b[j]=b[j+1];
					b[j+1]=t;
				}
			}
		}
	    for(i=0;i<num1;i++){
			if(a[i]==b[i]){
				count++;
			}
		}
		if(count==num1){
			printf("YES");
		}else{
			printf("NO");
		}
	}
	return 0;
}
int main()
{
	char a[100],b[100];
	scanf("%s ",a);
	scanf("%s",b);
	int lo,lon;
	lo=strlen(a);
	lon=strlen(b);
	if(lo!=lon)
		printf("NO");
	else
	{
		int c,d,e,f,counta[100]={0},countb[100]={0};
		int numa=0,numb=0;
		char ac[100],bc[100];
		for(c=0;c<lo;c++)
		{
			ac[numa]=a[c];
			for(e=c+1;e<lo;e++)
			{
				if(a[c]==a[e])
				{
					counta[numa]++;
					int g;
					for(g=e;g<lo-1;g++)
					{
						a[g]=a[g+1];
					}
					lo--;
				}
			}
			numa++;
		}
        for(d=0;d<lon;d++)
		{
			bc[numb]=b[d];
			for(f=d+1;f<lon;f++)
			{
				if(b[d]==b[f])
				{
					countb[numb]++;
					int g;
					for(g=f;g<lon-1;g++)
					{
						b[g]=b[g+1];
					}
					lon--;
				}
			}
			numb++;
		}
		if(numa!=numb)
			printf("NO");
		else
		{
			int x,y,z=0;
			for(x=0;x<numa;x++)
			{
				for(y=0;y<numb;y++)
				{
					if((counta[x]==countb[y])&&(ac[x]==bc[y]))
						z++;
				}
			}
			if(z==numa)
				printf("YES");
			else
				printf("NO");
		}
	}
	return 0;
}
int main()
{
	int i,j,l1,l2;
	char w1[20],w2[20];
	scanf("%s %s",w1,w2);
	l1=strlen(w1);
	l2=strlen(w2);
	if(l1==l2)
	{
		for(i=0;i<l1;i++)
		{
			for(j=0;j<l1;j++)
				if(w1[i]==w2[j])
				{
					w2[j]=0;
					goto Q;
				}
			printf("NO");
			goto M;
Q:;
		}
		printf("YES");
M:;
	}
	else
		printf("NO");
	return 0;
}
void main()
{
	int m,n,c,i,j;
	char s1[200],s2[200];
	c=0;
	scanf("%s",s1);
	scanf("%s",s2);
	m=strlen(s1);
	n=strlen(s2);
	if(m!=n)
	{
		printf("NO");
	}
	else
	{
		for(i=0;i<m;i++)
		{
			for(j=0;j<m;j++)
			{
				if(s2[j]==s1[i])
				{
					s2[j]=' ';
					c=0;
					break;
				}
				else
				{
					c=1;
				}
			}
		}
			if(c==0)
		{
			printf("YES");
		}
		else
		{
			printf("NO");
		}
	}
	
}
int main(int argc, char* argv[])
{
	char a[100],b[100];
	int i,j,len1,len2,flag=0;
	scanf("%s",a);
	scanf("%s",b);
	len1=strlen(a);
	len2=strlen(b);
	if(len1!=len2)printf("NO\n");
	else
	{
		for(i=0;i<len1;i++)
		{
			for(j=0;j<len1;j++)
			{
				if(a[i]==b[j])
				{
					b[j]='\0';
					flag++;
					break;
				}
			}
		}
		if(flag==len1)printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}
void main()
{
	char str1[101],str2[101];
	int a[26],b[26];
	int i,l,f;
	scanf("%s %s",str1,str2);
	if (strlen(str1)!=strlen(str2)) printf("NO\n");
	else
	{
		for (i=0;i<26;i++)
		{
			a[i]=0;
			b[i]=0;
		}
		l=strlen(str1);
		for (i=0;i<l;i++)
		{
			if ((str1[i]>='A')&&(str1[i]<='Z'))
				a[str1[i]-'A']=a[str1[i]-'A']+1;
			else b[str1[i]-'a']=b[str1[i]-'a']+1;
			if ((str2[i]>='A')&&(str2[i]<='Z'))
				a[str2[i]-'A']=a[str2[i]-'A']-1;
			else b[str2[i]-'a']=b[str2[i]-'a']-1;
		}
		f=1;
		for (i=0;i<26;i++)
			if ((a[i]!=0)||(b[i]!=0)) f=0;
		if (f==1) printf("YES\n");
		else printf("NO\n");
	}
}
void main()
{
	char a[1000],b[1000],t;
	int i,j,na,nb;
	scanf("%s %s",a,b);
	na=strlen(a);
	nb=strlen(b);
	if(na!=nb)printf("NO\n");
	else
	{
		for(i=0;i<na;i++)
		{
			for(j=i;j<nb;j++)
			{
				if(a[i]==b[j])
				{
					t=b[j];
					b[j]=b[i];
					b[i]=t;
				}
			}
		}

		if(strcmp(a,b)==0)
			printf("YES\n");
		else
			printf("NO\n");
}}
void main()
{char str1[100],str2[100];
scanf("%s%s",str1,str2);
int sum1[26],sum2[26],sum3[26],sum4[26];
int n1=strlen(str1),n2=strlen(str2);
int i,j,k=0;
memset(sum1,0,sizeof(sum1));
memset(sum2,0,sizeof(sum2));
memset(sum3,0,sizeof(sum3));
memset(sum4,0,sizeof(sum4));
for(i=0;i<n1;i++)
{
	if(str1[i]>='a'&&str1[i]<='z')
		sum1[(str1[i]-'a')]++;
	if(str1[i]>='A'&&str1[i]<='Z')
		sum2[(str1[i]-'A')]++;
}
for(i=0;i<n2;i++)
{
	if(str2[i]>='a'&&str2[i]<='z')
		sum3[(str2[i]-'a')]++;
	if(str2[i]>='A'&&str2[i]<='Z')
		sum4[(str2[i]-'A')]++;
}
for(j=0;j<26;j++)
{if((sum1[j]!=sum3[j])||(sum2[j]!=sum4[j])) k++;}
if(k==0) printf("YES");
else printf("NO");

}
int main()
{   int i,j,t,sum=0;
	char a[100],b[100];
	scanf("%s %s",a,b);
	if(strlen(a)==strlen(b)){
		for(i=0;i<strlen(a)&&a[i]!='\0';i++){
			t=0;
			for(j=0;j<strlen(b)&&b[j]!='\0';j++){
				if(b[j]==a[i]){
					b[j]='0';
					t=1;
					sum++;
					break;
				}
			}
			if(t==0){
				printf("NO");
				break;
			}
		}
		if(sum==strlen(a)){
			printf("YES");
		}
	}
	else{
		printf("NO");
	}
	return 0;
}
int cmp(const void *a,const void *b)
{
	return(*(char*)a-*(char*)b);
}
void main()
{
	char s1[1000],s2[1000];
	scanf("%s%s",s1,s2);
	int n1=strlen(s1),n2=strlen(s2);
	int flag=1;
	if(n1!=n2) {printf("NO");flag=0;}
	qsort(s1,n1,sizeof(s1[0]),cmp);
	qsort(s2,n2,sizeof(s2[0]),cmp);
	if(flag){
	if(strcmp(s1,s2)==0)
		printf("YES");
	else printf("NO");
	}
}
void main()
{
	int a[26],i,x,y,b[26];
	char moto[1000],genzai[1000];
	for(i=0;i<26;i++)
	{
		a[i]=0;
		b[i]=0;
	}
	scanf("%s",moto);
	scanf("%s",genzai);
	x=strlen(moto);
	y=strlen(genzai);
	if(x!=y)
		printf("NO\n");
	else
	{
		for(i=0;i<x;i++)
		{
			a[moto[i]-'a']++;
			b[genzai[i]-'a']++;
		}
		for(i=0;i<25;i++)
			if(a[i]!=b[i])
				break;
		if(i==25)
			printf("YES\n");
		else
			printf("NO\n");
	}
}
void order(char ch[],int len)
{
	int i;
	char temp;
	if(len==1);
	else
	{
		for(i=0;i<len-1;i++)
		{
			if(ch[i]>ch[i+1])
			{
				temp=ch[i];
				ch[i]=ch[i+1];
				ch[i+1]=temp;
			}
		}
		order(ch,len-1);
	}
}
int main()
{
	char ch1[100],ch2[100];
	int len1,len2;
	scanf("%s %s",ch1,ch2);
	len1=strlen(ch1);
	len2=strlen(ch2);
	if(len1!=len2)printf("NO\n");
	else
	{
		order(ch1,len1);
		order(ch2,len1);
		if(strcmp(ch1,ch2)==0)printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}
void main()
{
	int i,j,k;
    char c[100],d[100];
	scanf("%s%s",c,d);
	if(strlen(c)==strlen(d))
	{
	for(i=0;c[i]!='\0';)
	{
		k=0;
		for(j=0;d[j]!='\0';j++)
		{
			if(c[i]==d[j])
			{
				k=1;
				d[j]=' ';
				i=i+1;
				break;
			}
		}
	}
	if(k==0)
		printf("NO");
	else printf("YES");
	}
	else printf("NO");
}
void paixu(char a[])
{
	int i,j;
	char b;
	for(i=0;i<strlen(a)-1;i++)
	{
		for(j=0;j<strlen(a)-1-i;j++)
		{
			if(a[j]>a[j+1])
			{
				b=a[j];
		     	a[j]=a[j+1];
		    	a[j+1]=b;
			}
		}
	}
}
void main()
{
	char a[100],b[100];
	scanf("%s%s",a,b);
	paixu(a);
	paixu(b);
	if(strcmp(a,b)==0)
		printf("YES");
	else 
		printf("NO");
}
int main()
{
  int i,a[129]={0},b[129]={0};
  char c;
  scanf("%c",&c);
  while(c!=' ')
  { 
    a[(unsigned short)c]++;
    scanf("%c",&c);
  }
  scanf("%c",&c);
  while(c!='\n')
  { 
    b[(unsigned short)c]++;
    scanf("%c",&c);
  }
  for(i=1;i<=128;i++)
  {
     if(a[i]!=b[i]) break;
  }
  if(i>128) printf("YES");
  else printf("NO");
  return 0;
}
void main()
{
	int m,n,i,j,k;
	char s[100],t[100],p[100],q[10];
	scanf("%s%s",s,t);
	m=strlen(s);
	n=strlen(t);
	if(m!=n)
		printf("NO");
	else 
	{
		for(i=0;i<n;i++)
			p[i]=1;
		for(j=0;j<m;)
		{
			for(k=0;k<n;)
			{
				if(s[j]==t[k]&&p[k]==1)
				{p[k]=0;break;}
				else k++;
			}
			if(k==n)
			{printf("NO");break;}
			else j++;
		}
		if(j==m)
			printf("YES");
	}
}
void main()
{
	int i,j,t=0,m,n;
	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<n;j++)
				if(a[i]==b[j])
				{b[j]=0;break;}
		}
		for(i=0;i<n;i++)
			if(b[i]!=0)
			{t=1;break;}
			if(t==0)
				printf("YES");
			else printf("NO");
}
void main()
{
	int a1[123]={0},a2[123]={0},i,j;
	char c1[50]={0},c2[50]={0};
	scanf("%s",c1);
	scanf("%s",c2);
	if(strlen(c1)!=strlen(c2))
		printf("NO\n");
	else
	{
			for(i=0;i<=strlen(c1)-1;i++)
			{
				a1[c1[i]]=a1[c1[i]]+1;
				a2[c2[i]]=a2[c2[i]]+1;
			}
		for(i=0;i<=122;i++)
		{
			if(a1[i]!=a2[i])
			{
				printf("NO\n");
				break;
			}
		}
		if(i==123)
			printf("YES\n");
	}
}
int main()
{
	char str1[1000],str2[1000];
	int i=0,count1[53]={0},count2[53]={0},flag=1,le1,le2;
	cin>>str1;
	cin>>str2;
	le1=strlen(str1);
	le2=strlen(str2);
  for(i=0;i<=le1-1;i++)
  {
		if(str1[i]>=97)
			count1[str1[i]-70]++;
		else count1[str1[i]-64]++;

  }

	for(i=0;i<=le2-1;i++)
	{

			if(str2[i]>=97)
				count2[str2[i]-70]++;
			else count2[str2[i]-64]++;


		}
	for(i=1;i<=52;i++)
		if(count1[i]!=count2[i])
		{
			flag=0;
			break;
		}
	if(flag==0)
		cout<<"NO"<<endl;
	if(flag==1)
		cout<<"YES"<<endl;
	return 0;
}
main()
{
	int i,j,k,cont=0;
	char s1[100],s2[100];
	scanf("%s %s",s1,s2);
	for(i=0;s1[i]!='\0';)
		i++;
	for(k=0;s2[k]!='\0';)
		k++;
	if(i!=k)
		printf("NO");
	else
	{
		for(i=0;i<k;i++)
		{
			for(j=0;j<k;j++)
			{
				if(s1[i]==s2[j])
				{
					cont++;
					break;
				}
			}
		}
		if(cont==k)
			printf("YES");
		else
			printf("NO");
	}
}
int main()
{
	int i,j,k;
	char a[100]={0};
	char b[100]={0};
	scanf("%s",a);
	scanf("%s",b);
	int c[100]={0};
	int sum=0;

	if(strlen(a)!=strlen(b))
		{printf("NO");
	return 0;}
	else{

	for(i=0;i<100;i++)
		for(j=0;j<100;j++)
			if((a[i]==b[j])&&(a[i]!='0')&&(!c[j]))
					{c[j]=1;
					break;}


	for(i=0;i<strlen(b);i++)
		sum=sum+c[i];
	
	if(sum==strlen(b))
		printf("YES");
	else
		printf("NO");



	}
	
}
void main()
{
	char str1[100],str2[100];
	int count1[500]={0},count2[500]={0},i,n,m;
	scanf("%s%s",str1,str2);
	n=strlen(str1);
	m=strlen(str2);
	for(i=0;i<n;i++)
	{
		if(str1[i]<='Z'&&str1[i]>='A')
		{
			count1[str1[i]]++;
		}
		else if(str1[i]<='z'&&str1[i]>='a')
		{
			count1[str1[i]]++;
		}
	}
	for(i=0;i<m;i++)
	{
		if(str2[i]<='Z'&&str2[i]>='A')
		{
			count2[str2[i]]++;
		}
		else if(str2[i]<='z'&&str2[i]>='a')
		{
			count2[str2[i]]++;
		}
	}
	for(i=0;i<500;i++)
	{
		if(count1[i]!=count2[i])
		{
			printf("NO");
			break;
		}
	}
	if(i>=500)
		printf("YES");
}
int main()
{
	char a[20],b[20];
	int i,j,k;
	int m,n;
	m=0;
	n=0;
    for(i=0;i<20;i++)
	{
		scanf("%c",&a[i]);
		if(a[i]==' ')
			break;
	}
   for(j=0;j<20;j++)
	{
		scanf("%c",&b[j]);
		if(b[j]=='\n')
			break;
	}
for(k=0;k<i;k++)
{
	m=m+a[k];
}
for(k=0;k<j;k++)
{
	n=n+b[k];
}
if(m==n)
printf("YES");
else 
printf("NO");
  return 0;
}
void main()
{char a[100],b[100];
 int i,j,k,t,p;
 scanf("%s %s",a,b);
 k=strlen(a);
 t=strlen(b);
 if(k!=t)
  printf("NO\n");
 else
  {for(i=0;i<k;i++)
    for(j=0;j<t;j++)
     if(a[i]==b[j])
     {b[j]=' ';p=1;break;}
     else p=0;
    if(p==1) printf("YES\n");
    if(p==0) printf("NO\n");}
}
/*
 * ??????.cpp
 *
 *  Created on: 2010-12-31
 *      Author: wangwei
 */
int main()
{
	char str1[100],str2[100];
	cin>>str1>>str2;
	int i,j,l1,l2;
	l1=strlen(str1);
	l2=strlen(str2);
	if(l1!=l2) cout<<"NO"<<endl;
	else
	{
		char t,q;
		for(i=0;i<l1-1;i++)
			for(j=0;j<l1-1-i;j++)
				if(str1[j+1]>str1[j])
				{
					t=str1[j+1];
					str1[j+1]=str1[j];
					str1[j]=t;
				}
		for(i=0;i<l2-1;i++)
			for(j=0;j<l2-1-i;j++)
				if(str2[j+1]>str2[j])
				{
					q=str2[j+1];
					str2[j+1]=str2[j];
					str2[j]=q;
				}
		if(strcmp(str1,str2)==0)
			cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}