program ansi;

{$APPTYPE CONSOLE}
uses
  SysUtils;

var fin,fout:text;
    st1,st2:array [1..100] of char;
    dl1,dl2,i,j,k,z,t:integer;
    inp1,inp2:string;
    cas:string[1];
    s2,s1:array [1..100] of integer;
    raz:array[1..100,1..100] of integer;
    l:boolean;
function SC(e:string):byte;
  begin
    if e='A' THEN SC:=1;
    if e='B' THEN SC:=2;
    if e='C' THEN SC:=3;
    if e='D' THEN SC:=4;
    if e='E' THEN SC:=5;
    if e='F' THEN SC:=6;
    if e='G' THEN SC:=7;
    if e='H' THEN SC:=8;
    if e='I' THEN SC:=9;
    if e='J' THEN SC:=10;
    if e='K' THEN SC:=11;
    if e='L' THEN SC:=12;
    if e='M' THEN SC:=13;
    if e='N' THEN SC:=14;
    if e='O' THEN SC:=15;
    if e='P' THEN SC:=16;
    if e='Q' THEN SC:=17;
    if e='R' THEN SC:=18;
    if e='S' THEN SC:=19;
    if e='T' THEN SC:=20;
    if e='U' THEN SC:=21;
    if e='V' THEN SC:=22;
    if e='W' THEN SC:=23;
    if e='X' THEN SC:=24;
    if e='Y' THEN SC:=25;
    if e='Z' THEN SC:=26;
  end;


  begin
    assign(fin,'ancient.in');
  assign(fout,'ansient.out');
  reset(fin);
  rewrite(fout);
  readln(fin,inp1);
  readln(fin,inp2);
  dl1:=length(inp1);
  dl2:=length(inp2);
  l:=false;
  if dl1<>dl2 then l:=true;
    for i:=1 to dl1 do
      begin
      cas:=copy(inp1,i,1);
      s1[i]:=sc(cas);
      end;

    for i:=1 to dl1 do
      begin
      cas:=copy(inp2,i,1);
      s2[i]:=sc(cas);
      end;
  for i:=1 to dl1 do
    for j:=1 to dl1 do
      raz[i,j]:=s1[i]-s2[j];
  for i:=1 to dl1 do
    for j:=1 to dl1 do
      for k:=1 to dl1 do
       for z:=1 to dl1 do;
         if (z<>j)and(i<>k)and((raz[i,j]=s1[k]-s2[z]) or (raz[i,j]=s1[k]-s2[z]-26) or (raz[i,j]=s1[k]-s2[z]+26)) then raz[i,j]:=27;
  for i:=1 to dl1 do
    for j:=1 to dl1 do
      if raz[i,j]=27 then t:=t+1;
  if t<>dl1 then l:=true;
  if l then write(fout,'NO') else write(fout,'YES');
close(fin);
close(fout);
 end.
