import sys def solve(): # 入力を一括で読み込む input_data = sys.stdin.read().split() if not input_data: return Q = int(input_data[0]) out = [] idx = 1 for _ in range(Q): S = input_data[idx] T = input_data[idx+1] idx += 2 # 1. 文字列の長さが異なる場合は No if len(S) != len(T): out.append("No") continue # 2. 構成する文字の個数が異なる場合は No if sorted(S) != sorted(T): out.append("No") continue # 3. 隔離状態 (Blocked) かどうかを判定する関数 def is_blocked(s): # 'o' を除いた列を作成 non_o = [c for c in s if c != 'o'] if not non_o: return False try: first_d = non_o.index('d') except ValueError: # 'd' が存在しない場合は隔離されない return False # 最初の 'd' より後に 'g' が存在するか確認 (g^A d^B の形か) if 'g' in non_o[first_d:]: return False # 'g' が存在しない場合 (A = 0) if first_d == 0: return False # 最後の 'g' のインデックスと、最初の 'd' のインデックスを取得 last_g_idx = s.rindex('g') first_d_idx = s.index('d') # 最後の 'g' と最初の 'd' の間にある 'o' の個数を計算 num_o = first_d_idx - last_g_idx - 1 # 'o' の個数が 3 個以上であれば隔離状態 return num_o >= 3 # S と T の隔離状態が一致していれば Yes、そうでなければ No if is_blocked(S) == is_blocked(T): out.append("Yes") else: out.append("No") # 結果を一括出力 print('\n'.join(out)) if __name__ == '__main__': solve()