q = 1 q = int(input()) class Fenwick_Tree: def __init__(self, n): self._n = n self.data = [0] * n def add(self, p, x): assert 0 <= p < self._n p += 1 while p <= self._n: self.data[p - 1] += x p += p & -p def sum(self, l, r): assert 0 <= l <= r <= self._n return self._sum(r) - self._sum(l) def _sum(self, r): s = 0 while r > 0: s += self.data[r - 1] r -= r & -r return s for _ in range(q): s = input() t = input() n = len(s) cou = [0]*26 for i in s: cou[ord(i) - ord('a')] += 1 for i in t: cou[ord(i) - ord('a')] -= 1 tf = False for i in range(26): if cou[i]: tf = True break if n%2: guuki = False c1 = [0]*26 c2 = [0]*26 c11 = [0]*26 c22 = [0]*26 lis = [[] for _ in range(26)] lis2 = [[] for _ in range(26)] ft1 = Fenwick_Tree(n) ft2 = Fenwick_Tree(n) for i in range(n): ss = ord(s[i]) - ord('a') if i%2 == 0: c1[ss] += 1 c11[ord(t[i]) - ord('a')] += 1 lis[ss].append(i) else: c2[ss] += 1 c22[ord(t[i]) - ord('a')] += 1 lis2[ss].append(i) for i in range(26): if c1[i] != c11[i]: tf = True break if c2[i] != c22[i]: tf = True break if not tf: c11 = [0]*26 c22 = [0]*26 for i in range(26): if c1[i] >= 2: guuki = True break if c2[i] >= 2: guuki = True break t1,t2 = 0,0 for i in range(n): ss = ord(t[i]) - ord('a') if i%2 == 0: t1 += ft1.sum(lis[ss][c11[ss]],n) ft1.add(lis[ss][c11[ss]],1) c11[ss] += 1 else: t2 += ft2.sum(lis2[ss][c22[ss]],n) ft2.add(lis2[ss][c22[ss]],1) c22[ss] += 1 if guuki == False: if t1%2 != t2%2: tf = True else: c = [0]*676 for i in range(0,n,2): c11 = ord(s[i]) - ord('a') c12 = ord(s[i+1]) - ord('a') c21 = ord(t[i]) - ord('a') c22 = ord(t[i+1]) - ord('a') c[c11*26+c12] += 1 c[c21*26+c22] -= 1 for i in c: if i: tf = True break if tf: print("No") else: print("Yes")