Equalizing Two Strings
Contest: Codeforces Round 598 (Div. 3)
Difficulty rating: 2000
Tags: constructive algorithms, sortings, strings

You are given two strings $$$s$$$ and $$$t$$$ both of length $$$n$$$ and both consisting of lowercase Latin letters.

In one move, you can choose any length $$$len$$$ from $$$1$$$ to $$$n$$$ and perform the following operation:

- Choose any contiguous substring of the string $$$s$$$ of length $$$len$$$ and reverse it;
- at the same time choose any contiguous substring of the string $$$t$$$ of length $$$len$$$ and reverse it as well.

Note that during one move you reverse exactly one substring of the string $$$s$$$ and exactly one substring of the string $$$t$$$.

Also note that borders of substrings you reverse in $$$s$$$ and in $$$t$$$ can be different, the only restriction is that you reverse the substrings of equal length. For example, if $$$len=3$$$ and $$$n=5$$$, you can reverse $$$s[1 \dots 3]$$$ and $$$t[3 \dots 5]$$$, $$$s[2 \dots 4]$$$ and $$$t[2 \dots 4]$$$, but not $$$s[1 \dots 3]$$$ and $$$t[1 \dots 2]$$$.

Your task is to say if it is possible to make strings $$$s$$$ and $$$t$$$ equal after some (possibly, empty) sequence of moves.

You have to answer $$$q$$$ independent test cases.

Input format:
The first line of the input contains one integer $$$q$$$ ($$$1 \le q \le 10^4$$$) — the number of test cases. Then $$$q$$$ test cases follow.

The first line of the test case contains one integer $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — the length of $$$s$$$ and $$$t$$$.

The second line of the test case contains one string $$$s$$$ consisting of $$$n$$$ lowercase Latin letters.

The third line of the test case contains one string $$$t$$$ consisting of $$$n$$$ lowercase Latin letters.

It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2 \cdot 10^5$$$ ($$$\sum n \le 2 \cdot 10^5$$$).

Output format:
For each test case, print the answer on it — "YES" (without quotes) if it is possible to make strings $$$s$$$ and $$$t$$$ equal after some (possibly, empty) sequence of moves and "NO" otherwise.

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Example input:
4
4
abcd
abdc
5
ababa
baaba
4
asdf
asdg
4
abcd
badc

Example output:
NO
YES
NO
YES

Editorial:
The necessary condition to make strings equal is that the number of occurrences of each character should be the same in both strings. Let's show that if some character appears more than once, we always can make strings equal. How? Let's sort the first string by swapping adjacent characters (and it does not matter what do we do in the second string). Then let's sort the second string also by swapping adjacent characters but choose the pair of adjacent equal characters in the first string (it always exists because the first string is already sorted).
Otherwise, all characters in both strings are distinct and they lengths are at most $$$26$$$. Then the answer is YES if the parity of the number of inversions (the number inversions in the array $$$a$$$ is the number of such pairs of indices $$$i, j$$$ that $$$i < j$$$ but $$$a_i > a_j$$$) are the same. It can be proven in the following way: every swap of two adjacent elements changes the parity of the number of inversions.
Time complexity: $$$O(max(n, AL^2))$$$.