#include<bits/stdc++.h>
using namespace std;
int main(){
int t;// number of testcases
cin>>t;
while(t--){
string str1,str2;// two strings of equal length str1 and str2
cin>>str1>>str2;
unordered_multiset<char> s1,s2;// two sets
for(int i=0;i<str1.length();i++){
s1.insert(str1[i]);// initialization
s2.insert(str2[i]);
}
unordered_multiset<char>::iterator itr;
for(itr=s1.begin();itr!=s1.end();itr++){
if(s2.find(*itr)!=s2.end()) s2.erase(itr);/*if *itr is present in s2 then delete its address .....
i know i am making mistake somewhere here but i can't figure out*/
else {
cout<<"NO"<<"\n";// print NO if not found
break;
}
}
if(itr==s1.end()) cout<<"YES"<<"\n";// if itr reached the end print YES
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKXsgCiAgICBpbnQgdDsvLyBudW1iZXIgb2YgdGVzdGNhc2VzCiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIHN0cmluZyBzdHIxLHN0cjI7Ly8gdHdvIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoIHN0cjEgYW5kIHN0cjIKICAgICAgICBjaW4+PnN0cjE+PnN0cjI7CiAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PGNoYXI+IHMxLHMyOy8vIHR3byBzZXRzIAogICAgICAgIGZvcihpbnQgaT0wO2k8c3RyMS5sZW5ndGgoKTtpKyspewogICAgICAgICAgICBzMS5pbnNlcnQoc3RyMVtpXSk7Ly8gaW5pdGlhbGl6YXRpb24KICAgICAgICAgICAgczIuaW5zZXJ0KHN0cjJbaV0pOwogICAgICAgIH0KICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8Y2hhcj46Oml0ZXJhdG9yIGl0cjsKICAgICAgICBmb3IoaXRyPXMxLmJlZ2luKCk7aXRyIT1zMS5lbmQoKTtpdHIrKyl7CiAgICAgICAgICAgIGlmKHMyLmZpbmQoKml0cikhPXMyLmVuZCgpKSBzMi5lcmFzZShpdHIpOy8qaWYgKml0ciBpcyBwcmVzZW50IGluIHMyIHRoZW4gZGVsZXRlIGl0cyBhZGRyZXNzIC4uLi4uCiAgICAgICAgICAgIAkJCQkJCQkJCQkJaSBrbm93IGkgYW0gbWFraW5nIG1pc3Rha2Ugc29tZXdoZXJlIGhlcmUgYnV0IGkgY2FuJ3QgZmlndXJlIG91dCovCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY291dDw8Ik5PIjw8IlxuIjsvLyBwcmludCBOTyBpZiBub3QgZm91bmQKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKGl0cj09czEuZW5kKCkpIGNvdXQ8PCJZRVMiPDwiXG4iOy8vIGlmIGl0ciByZWFjaGVkIHRoZSBlbmQgcHJpbnQgWUVTCiAgICB9Cn0=