Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef pair <int,int> PII;
- typedef long long int LL;
- #define REP(i,j) for(int i=0;i<j;i++)
- #define REPNM(i,j,k) for(int i=j;i<k;i++)
- #define RREP(i,j,k) for(int i=j;i>=k;i--)
- #define pb push_back
- #define mp make_pair
- #define A first
- #define B second
- #define MEM(i,j) memset(i,j,sizeof i)
- #define ALL(i) i.begin(),i.end()
- #define DB() if(debug)
- #define DBGG(i,j) DB()cout<<i<<" "<<j<<endl;
- #define DB4(i,j,k,l) DB() cout<<i<<" "<<j<<" "<<k<<" "<<l<<endl;
- #define RI(i) scanf("%d",&i)
- #define RII(i,j) RI(i) , RI(j)
- #define RIII(i,j,k) RII(i , j) , RI(k)
- #define RL(i) scanf("%lld",&i)
- #define RLL(i,j) RL(i) , RL(j)
- #define RLLL(i,j,k) RLL(i , j) , RL(k)
- ///---------------------------
- #define MAX 201
- #define INF 0x3f3f3f3f
- #define debug 1
- #define MOD 1000000007LL
- string a , b;
- int solve(int la , int ra , int lb , int rb){
- int len = ra - la + 1;
- int ok = 1;
- REP(i , len){
- if(a[la + i] != b[lb + i]){
- ok = 0; break;
- }
- }
- if(ok)return 1;
- if(len & 1) return 0;
- int use[30];
- MEM(use , 0);
- REP(i , len){
- use[ a[la + i] - 'a' ]++;
- use[ b[lb + i] - 'a' ]--;
- }
- REP(i , 30) if(use[i] != 0)return 0;
- int ha = len / 2;
- int aa = la + ha - 1;
- int bb = lb + ha - 1;
- if(solve(la , aa , lb , bb) == 1 && solve(aa + 1 , ra , bb + 1 , rb) == 1)return 1;
- if(solve(la , aa , bb + 1 , rb) == 1 && solve(aa + 1 , ra , lb , bb) == 1)return 1;
- return 0;
- }
- int main(){
- cin.tie(0) , cout.sync_with_stdio(0);
- while(cin >> a >> b){
- int len = a.size();
- int ok = solve(0 , len - 1 , 0 , len - 1);
- if(ok)cout << "YES" << endl;
- else cout << "NO" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement