等価な文字列

新しい文字列の等価性(~)を定義しましょう。2つの文字列 ab が等価であるとは、両方の文字列が同じ長さを持ち、以下の条件のいずれかを満たす場合をいいます。
  1. ab と完全に同じである(a == b
  1. もし a を等しい長さの文字列 a1a2 に分割し、同様に bb1b2 に分割したとき、次のいずれかが成り立つ場合:
    1. a1b1 と等価、かつ a2b2 と等価(a1 ~ b1 および a2 ~ b2
    2. a1b2 と等価、かつ a2b1 と等価(a1 ~ b2 および a2 ~ b1
2つの文字列 ab が与えられたとき、これらが等価であるかどうかを調べてください。

Input

最初の行に文字列 a (1 ≤ |a| ≤ ) が与えられます。
次の行に文字列 b (1 ≤ |b| ≤ ) が与えられます。
文字列の長さ |a||b| は、それぞれ 2 の冪乗になっています。

Output

もし ab と等価ならば Yes を、そうでなければ No を出力してください。

Examples

入力例
出力例
bbcb bcbb
Yes
bbaa baba
No

Explanation

  1. bbcbbb + cb, bcbbbc + bbbbbb と等価。一方で cbbc は、cbc + bbcb + c のように分割すると等価になる。
  1. bbaabb + aa, bababa + ba ⇒ ここでペアをさらに分割して比べようとしても、aaba と比較することになり、aa には b が含まれないため、これらの文字列は等価にはならない。
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue