एल्गोरिथ्म्स और डेटा स्ट्रक्चर्स

समतुल्य स्ट्रिंग्स

आइए हम स्ट्रिंग समतुल्यता (~) की एक नई परिभाषा स्थापित करें। दो स्ट्रिंग्स a और b को समतुल्य माना जाता है, अगर उनकी लंबाई समान हो और निम्नलिखित में से कोई एक शर्त पूरी हो:
  1. a बिल्कुल b के समान हो (a == b)।
  1. अगर हम a को बराबर आकार की दो स्ट्रिंग्स a1 और a2 में बाँट दें, और b को भी बराबर आकार की दो स्ट्रिंग्स b1 और b2 में बाँट दें, तो:
    1. a1 समतुल्य हो b1 के, और a2 समतुल्य हो b2 के (a1 ~ b1 और a2 ~ b2)
    2. या फिर a1 समतुल्य हो b2 के, तथा a2 समतुल्य हो b1 के (a1 ~ b2 और a2 ~ b1)
दो स्ट्रिंग्स a और b दी गई हैं, और आपको यह जाँचना है कि ये दोनों स्ट्रिंग्स समतुल्य हैं या नहीं।

इनपुट

इनपुट की पहली पंक्ति में स्ट्रिंग a होती है (1 ≤ |a| ≤ )।
इनपुट की दूसरी पंक्ति में स्ट्रिंग b होती है (1 ≤ |b| ≤ )।
सुनिश्चिति: |a| और |b| दोनों ही 2 की किसी घात के बराबर होते हैं।

आउटपुट

यदि a समतुल्य है b के, तो प्रोग्राम को Yes प्रिंट करना चाहिए, अन्यथा No प्रिंट करना चाहिए।

Examples

Input
Output
bbcb bcbb
Yes
bbaa baba
No

Explanation

  1. bbcbbb + cb, bcbbbc + bbbb समतुल्य है bb के, जबकि cb समतुल्य है bc के, क्योंकि हम cbc + b और bcb + c में बाँट सकते हैं ⇒ वे समतुल्य हैं।
  1. bbaabb + aa, bababa + ba ⇒ यहाँ कोई जोड़ी समतुल्य नहीं है, क्योंकि अगर हम इन्हें आगे बाँटते हैं तो aa की तुलना ba से करनी होगी, और 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