#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
class cipher{
public:
char letter;
int frequency;
};
bool comp(const cipher &A,const cipher &B){
if(A.frequency<B.frequency)
return true;
else
return false;
}
vector<cipher> cipherF;
int posOf(char c)
{
int i;
for(i=0;i<26;++i)
if(cipherF[i].letter == c)
return i;
return -1;
}
int main()
{
int t;
cin>>t;
string tmp;
getline(cin,tmp);
while(t--){
cipherF.clear();
for(int i=97;i<=122;++i)
{
cipher cip;
cip.letter = i;
cip.frequency = 0;
cipherF.push_back(cip);
}
string txtF,cipherText;
getline(cin,txtF);
getline(cin,cipherText);
for(int i=0;i<cipherText.size();++i)
{
char c = tolower(cipherText[i]);
++(cipherF[c-97].frequency);
}
stable_sort(cipherF.begin(),cipherF.end(),comp);
for(int i=0;i<cipherText.size();++i)
{
int pos = posOf(cipherText[i]);
if(pos == -1)
continue;
else if(isupper(cipherText[i]))
cipherText[i] = toupper(txtF[pos]);
else
cipherText[i] = txtF[pos];
}
cout<<cipherText<<endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgY2lwaGVyewpwdWJsaWM6CiAgICBjaGFyIGxldHRlcjsKICAgIGludCBmcmVxdWVuY3k7Cn07CmJvb2wgY29tcChjb25zdCBjaXBoZXIgJkEsY29uc3QgY2lwaGVyICZCKXsKICAgIGlmKEEuZnJlcXVlbmN5PEIuZnJlcXVlbmN5KQogICAgICAgIHJldHVybiB0cnVlOwogICAgZWxzZQogICAgICAgIHJldHVybiBmYWxzZTsKfQp2ZWN0b3I8Y2lwaGVyPiBjaXBoZXJGOwppbnQgcG9zT2YoY2hhciBjKQp7CiAgICBpbnQgaTsKICAgIGZvcihpPTA7aTwyNjsrK2kpCiAgICAgICAgaWYoY2lwaGVyRltpXS5sZXR0ZXIgPT0gYykKICAgICAgICAgICAgcmV0dXJuIGk7CiAgICByZXR1cm4gLTE7CgoKfQppbnQgbWFpbigpCnsKCiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHN0cmluZyB0bXA7CiAgICBnZXRsaW5lKGNpbix0bXApOwogICAgd2hpbGUodC0tKXsKICAgICAgICBjaXBoZXJGLmNsZWFyKCk7CiAgICAgICAgZm9yKGludCBpPTk3O2k8PTEyMjsrK2kpCiAgICAgICAgewogICAgICAgICAgICBjaXBoZXIgY2lwOwogICAgICAgICAgICBjaXAubGV0dGVyID0gaTsKICAgICAgICAgICAgY2lwLmZyZXF1ZW5jeSA9IDA7CiAgICAgICAgICAgIGNpcGhlckYucHVzaF9iYWNrKGNpcCk7CgogICAgICAgIH0KICAgICAgICBzdHJpbmcgdHh0RixjaXBoZXJUZXh0OwogICAgICAgIGdldGxpbmUoY2luLHR4dEYpOwogICAgICAgIGdldGxpbmUoY2luLGNpcGhlclRleHQpOwoKICAgICAgICBmb3IoaW50IGk9MDtpPGNpcGhlclRleHQuc2l6ZSgpOysraSkKICAgICAgICB7CiAgICAgICAgICAgIGNoYXIgYyA9IHRvbG93ZXIoY2lwaGVyVGV4dFtpXSk7CiAgICAgICAgICAgICsrKGNpcGhlckZbYy05N10uZnJlcXVlbmN5KTsKICAgICAgICB9CgogICAgICAgIHN0YWJsZV9zb3J0KGNpcGhlckYuYmVnaW4oKSxjaXBoZXJGLmVuZCgpLGNvbXApOwogICAgICAgIGZvcihpbnQgaT0wO2k8Y2lwaGVyVGV4dC5zaXplKCk7KytpKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHBvcyA9IHBvc09mKGNpcGhlclRleHRbaV0pOwogICAgICAgICAgICBpZihwb3MgPT0gLTEpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgZWxzZSBpZihpc3VwcGVyKGNpcGhlclRleHRbaV0pKQogICAgICAgICAgICAgICAgY2lwaGVyVGV4dFtpXSA9IHRvdXBwZXIodHh0Rltwb3NdKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgY2lwaGVyVGV4dFtpXSA9IHR4dEZbcG9zXTsKCgogICAgICAgIH0KICAgICAgICBjb3V0PDxjaXBoZXJUZXh0PDxlbmRsOwoKCgogICAgfQp9Cg==