#include <bits/stdc++.h>
using namespace std;
map<pair<string, string>, bool> cache;
bool equavalent(string &a, string &b) {
  if (((cache).find(make_pair(a, b)) != (cache).end())) {
    return cache[make_pair(a, b)];
  }
  if (a == b) {
    cache[make_pair(a, b)] = true;
    return true;
  }
  if (a.size() == b.size() && a.size() % 2 == 0) {
    string a1 = a.substr(0, a.size() / 2);
    string a2 = a.substr(a.size() / 2, a.size() / 2);
    string b1 = b.substr(0, b.size() / 2);
    string b2 = b.substr(b.size() / 2, b.size() / 2);
    bool ans = (equavalent(a1, b1) && equavalent(a2, b2)) ||
               (equavalent(a2, b1) && equavalent(a1, b2));
    cache[make_pair(a, b)] = ans;
    return ans;
  } else {
    return false;
  }
}
int main(int argv, char **argc) {
  cin.sync_with_stdio(0);
  string a, b;
  cin >> a >> b;
  if (equavalent(a, b)) {
    printf("YES\n");
  } else {
    printf("NO\n");
  }
  return 0;
}
