/*
这题的关键是,既然可以一一映射,只要统计字符串中每个字母的出现次数并比较
也就是说,只要a串中的每一个次数,都能找到b串的一个次数和它相等即可
(但要注意不可重复,也就是说,a串中只有2个字母出现50次,b串也要恰好2个字母出现50次,不能多也不能少)
...至于到底是哪个字母出现50次,既然可以映射,哪个字母就不重要了,我们不需要关心这点...
*/
#include <iostream>
#include <cstring>
#include <algorithm>
const int maxn = 110;
const int check = 26;
using namespace std;
char a[maxn], b[maxn];
int na[check], nb[check];
int main()
{
while (cin >> a >> b)
{
int len = strlen(a);
//na和nb每次用前都要先清零,这点十分重要!!!
memset(na, 0, sizeof(na));
memset(nb, 0, sizeof(nb));
for (int i = 0; i < len; i++)
{
na[a[i] - 'A']++;
nb[b[i] - 'A']++;
}
sort(na, na+check);
sort(nb, nb+check);
bool flag = true;
for (int i = 0; i < check; i++)
{
if (na[i] != nb[i])
{
flag = false;
break;
}
}
if (flag) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}