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
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	public void run() {
		Scanner sc = new Scanner(System.in);
		char s[] = sc.next().toCharArray();
		int ss[] = new int[s.length];
		int sa[] = new int[26];
		char t[] = sc.next().toCharArray();
		int tt[] = new int[t.length];
		int ta[] = new int[26];

		int si=1;
		int ti=1;
		for(int i=0; i<s.length; i++) {

			if(sa[s[i]-'a'] ==0) {
				sa[s[i]-'a']=si++;
			}
			ss[i]=sa[s[i]-'a'];


			if(ta[t[i]-'a'] ==0) {
				ta[t[i]-'a']=ti++;
			}
			tt[i]=ta[t[i]-'a'];
		}
		int j=0;
		for(; j<s.length; j++) {
			if(ss[j] != tt[j]) break;
		}
		if(j == s.length) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
		sc.close();
	}
}
