#include<string.h>
#include<stdio.h>
#include<stdbool.h>
void divide(char a[],char a1[],char a2[],int len){
int i;
for(i=0;i<len;i++){
a1[i]=a[i];
}
a1[i]='\0';
for(i=0;i<len;i++){
a2[i]=a[i+len];
}
a2[i]='\0';
}
bool judge(char a[], char b[]){
if(strcmp(a,b)==0)
return true;
else{
if(strlen(a) == strlen(b) && (strlen(a) % 2 == 0)){
int i=strlen(a)/2;
char a1[i+10],a2[i+10],b1[i+10],b2[i+10];
divide(a,a1,a2,i);
divide(b,b1,b2,i);
return ( (judge(a1, b1) && judge(a2, b2) ) || (judge(a1, b2) && judge(a2, b1)) ) ;
}
else
return false;
}
}
int main(){
char a[10000000],b[10000000];
scanf("%s",a);
scanf("%s",b);
// printf("%d %d\n",strlen(a),strlen(b));
// printf("%s %s\n",a,b);
bool flag = judge(a,b);
if(flag)
printf("YES");
else
printf("NO");
return 0;
}