等価な文字列
新しい文字列の等価性(
~
)を定義しましょう。2つの文字列 a
と b
が等価であるとは、両方の文字列が同じ長さを持ち、以下の条件のいずれかを満たす場合をいいます。a
がb
と完全に同じである(a == b
)
- もし
a
を等しい長さの文字列a1
とa2
に分割し、同様にb
をb1
とb2
に分割したとき、次のいずれかが成り立つ場合: a1
がb1
と等価、かつa2
がb2
と等価(a1 ~ b1
およびa2 ~ b2
)a1
がb2
と等価、かつa2
がb1
と等価(a1 ~ b2
およびa2 ~ b1
)
2つの文字列
a
と b
が与えられたとき、これらが等価であるかどうかを調べてください。 Input
最初の行に文字列
a
(1 ≤ |a| ≤ ) が与えられます。次の行に文字列
b
(1 ≤ |b| ≤ ) が与えられます。文字列の長さ
|a|
と |b|
は、それぞれ 2 の冪乗になっています。 Output
もし
a
が b
と等価ならば Yes
を、そうでなければ No
を出力してください。 Examples
入力例 | 出力例 |
bbcb
bcbb | Yes |
bbaa
baba | No |
Explanation
bbcb
→bb
+cb
,bcbb
→bc
+bb
⇒bb
はbb
と等価。一方でcb
とbc
は、cb
→c
+b
、bc
→b
+c
のように分割すると等価になる。
bbaa
→bb
+aa
,baba
→ba
+ba
⇒ ここでペアをさらに分割して比べようとしても、aa
をba
と比較することになり、aa
にはb
が含まれないため、これらの文字列は等価にはならない。
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB