#include<iostream>
#include<fstream>
#include<string>
#include<cmath>
#include<map>
#include<algorithm>
#include<string.h>
#include<vector>
#include<stack>
using namespace std;
struct tree {
tree* left,*right;
char val;
};
void init(tree*&root)
{
char c;
cin >> c;
if (c == '0')
return;
if (!root)
{
root = new tree;
root->val = c;
root->left = NULL;
root->right = NULL;
}
init(root->left);
init(root->right);
}
void pre(tree*root)
{
if (!root)return;
cout << root->val<<" ";
pre(root->left);
pre(root->right);
}
bool issame(tree* t,tree*t2)
{
if(!t&&!t2)
{
return true;
}
else if (!t || !t2)
{
return false;
}
return t->val == t2->val && issame(t->left, t2->left) && issame(t->right, t2->right);
}
int main()
{
tree* t = NULL;
tree*t2 = NULL;
init(t2);
init(t);
if (issame(t, t2))
{
cout << "YES";
}
else
{
cout << "NO";
}
}