#include <bits/stdc++.h>
using namespace std;
template <class T>
string ToString(T t) {
  stringstream s;
  s << t;
  return s.str();
}
template <class T>
void ToOther(T &t, string a) {
  stringstream s(a);
  s >> t;
}
int n;
char A[200005];
char B[200005];
bool same(char *a, char *b, int len) {
  for (int i = 0; i < len; i++)
    if (a[i] != b[i]) return false;
  return true;
}
bool go(char *a, char *b, int len) {
  if (len % 2) return same(a, b, len);
  if (len % 2) return false;
  len /= 2;
  if (go(a, b, len) && go(a + len, b + len, len)) return true;
  if (go(a, b + len, len) && go(a + len, b, len)) return true;
  return false;
}
int main() {
  scanf("%s%s", A, B);
  int n = strlen(A);
  cout << (go(A, B, n) ? "YES" : "NO") << endl;
}
