You are given strings S and T consisting of lowercase English letters.

You can perform the following operation on S any number of times:

Operation: Choose two distinct lowercase English letters c_1 and c_2, then replace every occurrence of c_1 with c_2, and every occurrence of c_2 with c_1.

Determine if S and T can be made equal by performing the operation zero or more times.

Constraints

* 1 \leq |S| \leq 2 \times 10^5
* |S| = |T|
* S and T consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:


S
T


Output

If S and T can be made equal, print `Yes`; otherwise, print `No`.

Examples

Input

azzel
apple


Output

Yes


Input

chokudai
redcoder


Output

No


Input

abcdefghijklmnopqrstuvwxyz
ibyhqfrekavclxjstdwgpzmonu


Output

Yes
#include <iostream>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <utility>
 
using namespace std;



int main() {

string s;
string t;

cin >>s;
cin >>t;

int l;
l=s.size();

int sc[200]={};
int tc[200]={};

for(int i=0; i<l;i++){
sc[s[i]-97]++;
tc[t[i]-97]++;
}

sort(sc,sc+26);
sort(tc,tc+26);

for(int i=0;i<26;i++){
if(sc[i]!=tc[i]){cout <<"No"; break;}
if(i==25){cout <<"Yes";}
}


}

//'a'==97,'z'=122

