#include using namespace std; struct BIT { int N; vector bit; BIT(int n) : N(n), bit(n + 1, 0) {} void add(int i) { for (; i <= N; i += i & -i) { bit[i]++; } } int sum(int i) { int res = 0; for (; i > 0; i -= i & -i) { res += bit[i]; } return res; } }; int inversion(const string& S) { const int C = 26; BIT bit[2] = {BIT(C), BIT(C)}; int cnt[2] = {}; int res = 0; for (int i = 0; i < (int)S.size(); i++) { int p = i % 2; int c = S[i] - 'a' + 1; res += cnt[p] - bit[p].sum(c); bit[p].add(c); cnt[p]++; } return res; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); const int C = 26; int Q; cin >> Q; while (Q--) { string S, T; cin >> S >> T; int N = S.size(); vector> A(2, vector(C, 0)); vector> B(2, vector(C, 0)); for (int i = 0; i < N; i++) { A[i % 2][S[i] - 'a']++; B[i % 2][T[i] - 'a']++; } if (A != B) { cout << "No\n"; continue; } bool dup = false; for (int p = 0; p < 2; p++) { for (int c = 0; c < C; c++) { if (A[p][c] >= 2) dup = true; } } if (dup) { cout << "Yes\n"; continue; } int x = inversion(S); int y = inversion(T); cout << (x % 2 == y % 2 ? "Yes" : "No") << '\n'; } return 0; }