Empecemos con una nueva definición de equivalencia de cadenas (~). Dos cadenas a y b son equivalentes si tienen la misma longitud y se cumple uno de los siguientes casos:
a es idéntica a b (a == b)
Si dividimos a en dos cadenas del mismo tamaño, a1 y a2, y a su vez dividimos b en otras dos cadenas del mismo tamaño, b1 y b2, entonces:
a1 es equivalente a b1, y a2 es equivalente a b2 (a1 ~ b1 y a2 ~ b2)
a1 es equivalente a b2, y a2 es equivalente a b1 (a1 ~ b2 y a2 ~ b1)
Dadas dos cadenas a y b, se te pide determinar si dichas cadenas son equivalentes.
Entrada
La primera línea de la entrada contiene la cadena a (1 ≤ |a| ≤ ).
La segunda línea de la entrada contiene la cadena b (1 ≤ |b| ≤ ).
Las longitudes |a| y |b| son potencias de 2.
Salida
El programa debe imprimir Yes si a es equivalente a b, y No en caso contrario.
Ejemplos
Entrada
Salida
bbcb
bcbb
Yes
bbaa
baba
No
Explicación
bbcb → bb + cb, bcbb → bc + bb ⇒ bb es equivalente a bb, mientras que cb es equivalente a bc, pues podemos dividir cb → c + b, y bc → b + c ⇒ son equivalentes.
bbaa → bb + aa, baba → ba + ba ⇒ no hay pares equivalentes, porque si las dividimos aún más, tendríamos que comparar aa con cualquiera de las ba, y como aa no contiene ninguna b, las dos cadenas no serán equivalentes.