#include <bits/stdc++.h>
using namespace std;
bool check_same(string s1, string s2) {
  int ch[30];
  memset(ch, 0, sizeof(ch));
  for (int i = 0; i < s1.size(); i++) ch[s1[i] - 'a']++;
  for (int i = 0; i < s2.size(); i++) ch[s2[i] - 'a']--;
  for (int i = 0; i < 25; i++)
    if (ch[i] != 0) return false;
  return true;
}
bool f(string a, string b) {
  string a1, a2, b1, b2;
  if (a.size() == 0 or b.size() == 0) return false;
  if (a.size() != b.size()) return false;
  bool res = (a == b);
  if ((a.size() % 2 != 0 or b.size() % 2 != 0) and !res) return false;
  if (res) return true;
  if (!check_same(a, b)) return false;
  a1.insert(a1.begin(), a.begin(), a.begin() + a.size() / 2);
  a2.insert(a2.begin(), a.begin() + a.size() / 2, a.end());
  b1.insert(b1.begin(), b.begin(), b.begin() + b.size() / 2);
  b2.insert(b2.begin(), b.begin() + b.size() / 2, b.end());
  if (f(a1, b2) and f(a2, b1))
    return true;
  else if (f(a1, b1) and f(a2, b2))
    return true;
  else
    return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  string a, b;
  cin >> a >> b;
  if (f(a, b))
    printf("YES");
  else
    printf("NO");
}
