#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <ctype.h>
#include <queue>
#include <stack>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
char a[105] = {0};
char b[105] = {0};
int c[26] = {0};
int d[26] = {0};
int main()
{
scanf("%s%s",a,b);
int la = strlen(a);
int lb = strlen(b);
for(int i = 0; i < la; i++)
{
c[a[i] - 'A']++;
}
for(int i = 0; i < lb; i++)
{
d[b[i] - 'A']++;
}
// for(int i = 0; i < 26; i++)
// {
// printf("%d",c[i]);
// }
// printf("\n");
// for(int i = 0; i < 26; i++)
// {
// printf("%d",d[i]);
// }
// printf("\n");
sort(c, c + 26);//一一映射就是可以随便映射 前一位前两位后一位甚至本身
sort(d, d + 26);//所以只要数字对的上就可以了 内容不重要
bool flag = true;
for(int i = 0; i < 26; i++)
{
if(c[i] != d[i])
{
flag = false;
break;
}
}
if(flag)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
// for(int i = 0; i < 26; i++)
// {
// printf("%d",c[i]);
// }
// printf("\n");
// for(int i = 0; i < 26; i++)
// {
// printf("%d",d[i]);
// }
// printf("\n");
return 0;
}