//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x) x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i, n) for(int i = 0; i < n; ++i)
#define REP(i, n) for(int i = 1; i <= n; ++i)
#define rep1(i,start,n) for(int i=start;i<n;++i)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define mp make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p) //Pow calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b);
b=(b*b);
p>>=1;
}
return r;
}
template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b)%m;
b=(b*b)%m;
p>>=1;
}
return r;
}
//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
int main()
{
//freopen("a.in", "r", stdin);
//freopen("a.out", "w", stdout);
int test,len1,len2,cnt,cnt1,cnt2,cnt3;
string s1,s2,temp1,temp2,total[101],neg[101],pos[101],chng[101];
cin>>test;
while(test--)
{
cin>>s1>>s2;
len1=s1.size();
len2=s2.size();
cnt=0;
map<string,int>key1;
map<string,int>key2;
map<string,string>value1;
map<string,string>value2;
//Old dictionary;
//cout<<"Old dictionary"<<endl;
for(int i=1;i<len1-1;i++)
{
temp1="";
while(s1[i]!=':')
{
temp1+=s1[i];
i++;
}
total[cnt++]=temp1;
key1[temp1]=1;
i++;
temp2="";
while(s1[i]!=',' && s1[i]!='}')
{
temp2+=s1[i];
i++;
}
value1[temp1]=temp2;
//cout<<temp1<<" "<<value1[temp1]<<endl;
}
//cout<<"New dictionary"<<endl;
//New dictionary checking;
for(int j=1;j<len2-1;j++)
{
temp1="";
while(s2[j]!=':')
{
temp1+=s2[j];
j++;
}
key2[temp1]=1;
if(key1[temp1]!=1) total[cnt++]=temp1;
j++;
temp2="";
while(s2[j]!=',' && s2[j]!='}')
{
temp2+=s2[j];
j++;
}
value2[temp1]=temp2;
//cout<<temp1<<" "<<value2[temp1]<<endl;
}
/*for(int k=0;k<cnt;k++)
{
cout<<total[k]<<endl;
}*/
cnt1=0;
cnt2=0;
cnt3=0;
for(int i=0;i<cnt;i++)
{
if(key1[total[i]]==1 && key2[total[i]]!=1) neg[cnt1++]=total[i];
else if(key1[total[i]]!=1 && key2[total[i]]==1) pos[cnt2++]=total[i];
else if(value1[total[i]]!=value2[total[i]]) chng[cnt3++]=total[i];
}
//sorting
sort(neg,neg+cnt1);
sort(pos,pos+cnt2);
sort(chng,chng+cnt3);
if(!cnt1 && !cnt2 && !cnt3) cout<<"No changes"<<endl;
else
{
//positive checking;
if(cnt2)
{
cout<<"+"<<pos[0];
for(int i=1;i<cnt2;i++)
{
cout<<","<<pos[i];
}
cout<<endl;
}
//negative checking;
if(cnt1)
{
cout<<"-"<<neg[0];
for(int i=1;i<cnt1;i++)
{
cout<<","<<neg[i];
}
cout<<endl;
}
//change checking;
if(cnt3)
{
cout<<"*"<<chng[0];
for(int i=1;i<cnt3;i++)
{
cout<<","<<chng[i];
}
cout<<endl;
}
}
cout<<endl;
}
}
Ly8tLS0tLT58dHJ5PTA7IHdoaWxlKCFzdWNjZXNzKSB0cnkrKzt8PC0tLS0tLQovLy0tLS0tPnxCZWxpZWYgWW91cnNlbGYsUmVzcGVjdCBZb3Vyc2VsZnw8LS0tLQovLy0tLS0tPnxCZSBQcm91ZCBPZiBZb3Vyc2VsZixZb3UncmUgRG9pbmcgWW91ciBiZXN0fDwtLS0tLQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHVuaXEoeCkgIHguZXJhc2UodW5pcXVlKHguYmVnaW4oKSx4LmVuZCgpKSwgeC5lbmQoKSkgLy9VbmlxdWUgdmFsdWUgZmluZCBmcm9tIHZlY3RvcgojZGVmaW5lIHVwcGVyKGFycixuLGZpeGVkKSB1cHBlcl9ib3VuZChhcnIsYXJyK24sZml4ZWQpLWFyciAgLy9VcHBlciB2YWx1ZSBzZWFyY2g7CiNkZWZpbmUgbG93ZXIoYXJyLG4sZml4ZWQpIHVwcGVyX2JvdW5kKGFycixhcnIrbixmaXhlZCktYXJyICAvL0xvd2VyIHZhbHVlIHNlYXJjaDsKI2RlZmluZSBtYXgzKGEsYixjKSBtYXgobWF4KGEsYiksYykvL21heGltdW0gdmFsdWUgZmluZCB0aHJlZSB2YWx1ZTsKI2RlZmluZSBtaW4zKGEsYixjKSBtaW4obWluKGEsYiksYykvL21pbmltdW0gdmFsdWUgZmluZCB0aHJlZSB2YWx1ZTsKI2RlZmluZSByZXAoaSwgbikgZm9yKGludCBpID0gMDsgaSA8IG47ICsraSkKI2RlZmluZSBSRVAoaSwgbikgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiNkZWZpbmUgcmVwMShpLHN0YXJ0LG4pIGZvcihpbnQgaT1zdGFydDtpPG47KytpKQojZGVmaW5lIFBJIGFjb3MoLTEuMCkvL1BJIENhbGN1bGF0aW9uCiNkZWZpbmUgTEwgbG9uZyBsb25nCiNkZWZpbmUgQU5EKGEsYikgKChhKSAmIChiKSkKI2RlZmluZSBPUihhLGIpICgoYSl8KGIpKQojZGVmaW5lIFhPUihhLGIpICgoYSkgXiAoYikpCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgc3FyKHgpICgoeCkqKHgpKQojZGVmaW5lIHNxcnQoeCkgc3FydCgxLjAqKHgpKQojZGVmaW5lIElORl9NQVggMjE0NzQ4MzY0NwojZGVmaW5lIElORl9NSU4gLTIxNDc0ODM2NDcKI2RlZmluZSBNWCAxMDAwMDA1CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBQT1coVCBiLFQgcCkgICAgICAgICAgLy9Qb3cgY2FsY3VsYXRpb24KewogICAgVCByPTE7CiAgICB3aGlsZShwKQogICAgewogICAgICAgIGlmKHAmMSlyPShyKmIpOwogICAgICAgIGI9KGIqYik7CiAgICAgICAgcD4+PTE7CiAgICB9CiAgICByZXR1cm4gcjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBCaWdNb2QoVCBiLFQgcCxUIG0pIC8vQmlnTW9kIENhbGN1bGF0aW9uCnsKICAgIFQgcj0xOwogICAgd2hpbGUocCkKICAgIHsKICAgICAgICBpZihwJjEpcj0ocipiKSVtOwogICAgICAgIGI9KGIqYiklbTsKICAgICAgICBwPj49MTsKICAgIH0KICAgIHJldHVybiByOwp9CgovL3x8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnx8TWFpbl9Db2RlX1N0YXJ0X0Zyb21fSGVyZXx8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXx8CmludCBtYWluKCkKewogICAgLy9mcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiAgICAvL2ZyZW9wZW4oImEub3V0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHRlc3QsbGVuMSxsZW4yLGNudCxjbnQxLGNudDIsY250MzsKICAgIHN0cmluZyBzMSxzMix0ZW1wMSx0ZW1wMix0b3RhbFsxMDFdLG5lZ1sxMDFdLHBvc1sxMDFdLGNobmdbMTAxXTsKICAgIGNpbj4+dGVzdDsKICAgIHdoaWxlKHRlc3QtLSkKICAgIHsKICAgICAgICBjaW4+PnMxPj5zMjsKICAgICAgICBsZW4xPXMxLnNpemUoKTsKICAgICAgICBsZW4yPXMyLnNpemUoKTsKCgoKICAgICAgICBjbnQ9MDsKICAgICAgICBtYXA8c3RyaW5nLGludD5rZXkxOwogICAgICAgIG1hcDxzdHJpbmcsaW50PmtleTI7CiAgICAgICAgbWFwPHN0cmluZyxzdHJpbmc+dmFsdWUxOwogICAgICAgIG1hcDxzdHJpbmcsc3RyaW5nPnZhbHVlMjsKICAgICAgICAvL09sZCBkaWN0aW9uYXJ5OwogICAgICAgIC8vY291dDw8Ik9sZCBkaWN0aW9uYXJ5Ijw8ZW5kbDsKICAgICAgICBmb3IoaW50IGk9MTtpPGxlbjEtMTtpKyspCiAgICAgICAgewogICAgICAgICAgIHRlbXAxPSIiOwogICAgICAgICAgIHdoaWxlKHMxW2ldIT0nOicpCiAgICAgICAgICAgewogICAgICAgICAgICAgICB0ZW1wMSs9czFbaV07CiAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICB9CiAgICAgICAgICAgdG90YWxbY250KytdPXRlbXAxOwogICAgICAgICAgIGtleTFbdGVtcDFdPTE7CiAgICAgICAgICAgaSsrOwogICAgICAgICAgIHRlbXAyPSIiOwogICAgICAgICAgIHdoaWxlKHMxW2ldIT0nLCcgJiYgczFbaV0hPSd9JykKICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHRlbXAyKz1zMVtpXTsKICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgIH0KICAgICAgICAgICB2YWx1ZTFbdGVtcDFdPXRlbXAyOwoKICAgICAgICAgICAvL2NvdXQ8PHRlbXAxPDwiICI8PHZhbHVlMVt0ZW1wMV08PGVuZGw7CiAgICAgICAgfQoKICAgICAgICAvL2NvdXQ8PCJOZXcgZGljdGlvbmFyeSI8PGVuZGw7CiAgICAgICAgLy9OZXcgZGljdGlvbmFyeSBjaGVja2luZzsKCgoKICAgICAgICBmb3IoaW50IGo9MTtqPGxlbjItMTtqKyspCiAgICAgICAgewogICAgICAgICAgICB0ZW1wMT0iIjsKICAgICAgICAgICAgd2hpbGUoczJbal0hPSc6JykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGVtcDErPXMyW2pdOwogICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGtleTJbdGVtcDFdPTE7CiAgICAgICAgICAgIGlmKGtleTFbdGVtcDFdIT0xKSB0b3RhbFtjbnQrK109dGVtcDE7CiAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgdGVtcDI9IiI7CiAgICAgICAgICAgIHdoaWxlKHMyW2pdIT0nLCcgJiYgczJbal0hPSd9JykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGVtcDIrPXMyW2pdOwogICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhbHVlMlt0ZW1wMV09dGVtcDI7CiAgICAgICAgICAgIC8vY291dDw8dGVtcDE8PCIgIjw8dmFsdWUyW3RlbXAxXTw8ZW5kbDsKICAgICAgICB9CiAgICAgICAgLypmb3IoaW50IGs9MDtrPGNudDtrKyspCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDx0b3RhbFtrXTw8ZW5kbDsKICAgICAgICB9Ki8KCgoKICAgICAgICBjbnQxPTA7CiAgICAgICAgY250Mj0wOwogICAgICAgIGNudDM9MDsKICAgICAgICBmb3IoaW50IGk9MDtpPGNudDtpKyspCiAgICAgICAgewogICAgICAgICAgICBpZihrZXkxW3RvdGFsW2ldXT09MSAmJiBrZXkyW3RvdGFsW2ldXSE9MSkgbmVnW2NudDErK109dG90YWxbaV07CiAgICAgICAgICAgIGVsc2UgaWYoa2V5MVt0b3RhbFtpXV0hPTEgJiYga2V5Mlt0b3RhbFtpXV09PTEpIHBvc1tjbnQyKytdPXRvdGFsW2ldOwogICAgICAgICAgICBlbHNlIGlmKHZhbHVlMVt0b3RhbFtpXV0hPXZhbHVlMlt0b3RhbFtpXV0pIGNobmdbY250MysrXT10b3RhbFtpXTsKICAgICAgICB9CiAgICAgICAgLy9zb3J0aW5nCiAgICAgICAgc29ydChuZWcsbmVnK2NudDEpOwogICAgICAgIHNvcnQocG9zLHBvcytjbnQyKTsKICAgICAgICBzb3J0KGNobmcsY2huZytjbnQzKTsKCiAgICAgICAgaWYoIWNudDEgJiYgIWNudDIgJiYgIWNudDMpIGNvdXQ8PCJObyBjaGFuZ2VzIjw8ZW5kbDsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAvL3Bvc2l0aXZlIGNoZWNraW5nOwogICAgICAgICAgICBpZihjbnQyKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0PDwiKyI8PHBvc1swXTsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0xO2k8Y250MjtpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY291dDw8IiwiPDxwb3NbaV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICAgICB9CgoKICAgICAgICAgICAgLy9uZWdhdGl2ZSBjaGVja2luZzsKICAgICAgICAgICAgaWYoY250MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dDw8Ii0iPDxuZWdbMF07CiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MTtpPGNudDE7aSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCIsIjw8bmVnW2ldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9jaGFuZ2UgY2hlY2tpbmc7CiAgICAgICAgICAgIGlmKGNudDMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQ8PCIqIjw8Y2huZ1swXTsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0xO2k8Y250MztpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY291dDw8IiwiPDxjaG5nW2ldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgICAgfQoKCiAgICAgICAgfQogICAgICAgIGNvdXQ8PGVuZGw7CgogICAgfQp9Cg==