#include<bits/stdc++.h>
using namespace std;
struct p {
char ch4;
//char ch5;
string ch6;
//char ch6[30];
}
stud[20170];
struct q
{
string ch8;
char ch7;
}
plusi[20170];
struct pp
{
string ch11;
}
pl[200170];
int ww;
int paras[100000];
string paras2;
int main()
{
int a,b,c,d,e,f,z,y,x,w,k,maxi,r,m,n;bool flag=0;bool flag2=0;int vali=0;
char ch10;
fflush(stdin);
//cout<<"hi\n";
cin>>a;
e=0;f=0;
memset(paras,0,sizeof(paras));
for(b=0;b<a;b++)
{
cin>>ch10;
if(ch10=='-'){
cin>>stud[e].ch6;
e++;}
else{
plusi[f].ch7 = '+';
cin>>plusi[f].ch8;
paras[plusi[f].ch8[0]]++;f++;}
}
if(e==0 || f==0)
{
if(e==0)
{
cout<<"0\n";
}
else
{
m = e;
vector < string > pl;string par;
for(r=0;r<m;r++)
{ //cout<<stud[b].ch6[r];
par = stud[r].ch6[0];
pl.push_back(par);
}
sort( pl.begin(), pl.end() );
pl.erase( unique( pl.begin(), pl.end() ), pl.end() );
vector < string > :: iterator it;
m = pl.size();
cout<<m<<"\n";
for(it=pl.begin();it!=pl.end();it++)
{
cout<<*it<<"\n";
}
}
}
else{
m=0;flag2=0;
for(b=0;b<e;b++)//minus
{
z = stud[b].ch6.size();maxi=0;flag=0;flag2=0;
if(paras[stud[b].ch6[0]]==0)
{
maxi =0;pl[m].ch11 = stud[b].ch6[0];m++;
}
else
{
for(c=0;c<f;c++)//plus
{
// vali = strcmp(stud[b].ch6,plusi[c].ch8);
y = plusi[c].ch8.size();k=0;flag=0;flag2=0;//length of plus
if(plusi[c].ch8==stud[b].ch6)
{
flag=0;flag2=1;break;
}
else{
paras2 = string (plusi[c].ch8.begin(),
std::mismatch(plusi[c].ch8.begin(), plusi[c].ch8.end(), stud[b].ch6.begin()).first);
// cout<<paras2;
int yy=0;
yy = paras2.size();
//cout<<c;
if(paras2==" " || paras2=="\0")
{
k = 0;flag=1;
}
else if(z==yy)
{
flag=0;flag2=1;break;
}
else if(z>yy)
{
k = yy;flag=1;
}
}
//cout<<paras2<<"\n";
if(flag==0)
{
maxi=0;flag2 =1;break;
}
else if(k>maxi)
{
maxi =k;
}
}
if(flag2==1)
break;
else if(maxi>0 || flag==1){
stud[b].ch6.erase(stud[b].ch6.begin()+maxi+1,stud[b].ch6.end());
//cout<<stud[b].ch6[r];
pl[m].ch11 = stud[b].ch6;m++;}
}}
//cout<<pl[m-1].ch11<<"\n";
// std::sort(pl, pl+m, acompare);
//cout<<m<<"\n";
if(m==0 || flag2==1)
m=-1;
else{}
vector < string > po;string par;
if(m>0){
// vector < string > po;string par;
for(r=0;r<m;r++)
{ //cout<<pl[r].ch11;
par = pl[r].ch11;
po.push_back(par);
}
sort( po.begin(), po.end() );
po.erase( unique( po.begin(), po.end() ), po.end() );
vector < string > :: iterator it;
m = po.size();
}
else{}
vector < string > :: iterator it;
cout<<m<<"\n";
for(it=po.begin();it!=po.end();it++)
{
cout<<*it<<"\n";
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApzdHJ1Y3QgcCB7CmNoYXIgY2g0OwovL2NoYXIgY2g1OwpzdHJpbmcgY2g2OwovL2NoYXIgY2g2WzMwXTsKfQpzdHVkWzIwMTcwXTsKIApzdHJ1Y3QgcQp7CiAgICBzdHJpbmcgIGNoODsKICAgIGNoYXIgY2g3Owp9CnBsdXNpWzIwMTcwXTsKIApzdHJ1Y3QgcHAKewogCnN0cmluZyBjaDExOwp9CnBsWzIwMDE3MF07CiAKIGludCB3dzsKIAppbnQgcGFyYXNbMTAwMDAwXTsKIApzdHJpbmcgcGFyYXMyOwppbnQgbWFpbigpCnsKICAgIGludCBhLGIsYyxkLGUsZix6LHkseCx3LGssbWF4aSxyLG0sbjtib29sIGZsYWc9MDtib29sIGZsYWcyPTA7aW50IHZhbGk9MDsKICAgIGNoYXIgY2gxMDsKICAgIGZmbHVzaChzdGRpbik7CiAgICAvL2NvdXQ8PCJoaVxuIjsKICAgIGNpbj4+YTsKICAgIGU9MDtmPTA7Cm1lbXNldChwYXJhcywwLHNpemVvZihwYXJhcykpOwogICAgZm9yKGI9MDtiPGE7YisrKQogICAgewogICAgICAgIGNpbj4+Y2gxMDsKICAgICAgICBpZihjaDEwPT0nLScpewogICAgICAgIGNpbj4+c3R1ZFtlXS5jaDY7CiAKICAgICAgICBlKys7fQogICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBwbHVzaVtmXS5jaDcgPSAnKyc7CiAgICAgICAgY2luPj5wbHVzaVtmXS5jaDg7CiAgICAgICAgIHBhcmFzW3BsdXNpW2ZdLmNoOFswXV0rKztmKys7fQogCiAgICB9CiBpZihlPT0wIHx8IGY9PTApCnsKICAgIGlmKGU9PTApCiAgICB7CiAgICAgICAgY291dDw8IjBcbiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbSA9IGU7CiAKICAgICAgICB2ZWN0b3IgPCBzdHJpbmcgPiBwbDtzdHJpbmcgcGFyOwogICAgICAgICAgICAgICAgICAgZm9yKHI9MDtyPG07cisrKQogICAgICAgICAgICAgIHsgLy9jb3V0PDxzdHVkW2JdLmNoNltyXTsKICAgICAgICAgICAgICAgICAgcGFyID0gc3R1ZFtyXS5jaDZbMF07CiAgICAgICAgICAgICAgICAgIHBsLnB1c2hfYmFjayhwYXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc29ydCggcGwuYmVnaW4oKSwgcGwuZW5kKCkgKTsKICAgICAgICAgICAgICAgIHBsLmVyYXNlKCB1bmlxdWUoIHBsLmJlZ2luKCksIHBsLmVuZCgpICksIHBsLmVuZCgpICk7CiAgICAgICAgICAgICAgIHZlY3RvciA8IHN0cmluZyA+IDo6IGl0ZXJhdG9yIGl0OwogICAgICAgICAgICAgICBtID0gcGwuc2l6ZSgpOwogICAgICAgICAgICAgICAgY291dDw8bTw8IlxuIjsKICAgICAgICAgICAgICAgIGZvcihpdD1wbC5iZWdpbigpO2l0IT1wbC5lbmQoKTtpdCsrKQogICAgewogICAgICAgIGNvdXQ8PCppdDw8IlxuIjsKICAgIH0KIAogICAgICAgICAgICAgICAgfQogCiAKICAgIH0KIAplbHNlewogCiAgICBtPTA7ZmxhZzI9MDsKICAgIGZvcihiPTA7YjxlO2IrKykvL21pbnVzCiAgICB7CiAgICAgICAgeiA9IHN0dWRbYl0uY2g2LnNpemUoKTttYXhpPTA7ZmxhZz0wO2ZsYWcyPTA7CiAgICAgICAgaWYocGFyYXNbc3R1ZFtiXS5jaDZbMF1dPT0wKQogICAgICAgIHsKICAgICAgICAgICAgbWF4aSA9MDtwbFttXS5jaDExID0gc3R1ZFtiXS5jaDZbMF07bSsrOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICBmb3IoYz0wO2M8ZjtjKyspLy9wbHVzCiAgICAgICAgewogICAgICAgICAgIC8vIHZhbGkgPSBzdHJjbXAoc3R1ZFtiXS5jaDYscGx1c2lbY10uY2g4KTsKICAgICAgICAgICAgeSA9IHBsdXNpW2NdLmNoOC5zaXplKCk7az0wO2ZsYWc9MDtmbGFnMj0wOy8vbGVuZ3RoIG9mIHBsdXMKICAgICAgICAgICAgaWYocGx1c2lbY10uY2g4PT1zdHVkW2JdLmNoNikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxhZz0wO2ZsYWcyPTE7YnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKIAogICBwYXJhczIgPSAgc3RyaW5nIChwbHVzaVtjXS5jaDguYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1pc21hdGNoKHBsdXNpW2NdLmNoOC5iZWdpbigpLCBwbHVzaVtjXS5jaDguZW5kKCksIHN0dWRbYl0uY2g2LmJlZ2luKCkpLmZpcnN0KTsKICAgICAgICAgICAgICAgICAgICAgLy8gIGNvdXQ8PHBhcmFzMjsKaW50IHl5PTA7Cnl5ID0gcGFyYXMyLnNpemUoKTsKLy9jb3V0PDxjOwppZihwYXJhczI9PSIgIiB8fCBwYXJhczI9PSJcMCIpCiAgICB7CiAgICAgICAgayA9IDA7ZmxhZz0xOwogICAgfQogICAgZWxzZSBpZih6PT15eSkKICAgIHsKICAgICAgICBmbGFnPTA7ZmxhZzI9MTticmVhazsKICAgIH0KICAgIGVsc2UgaWYoej55eSkKICAgIHsKICAgICAgICBrID0geXk7ZmxhZz0xOwogICAgfQogCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvL2NvdXQ8PHBhcmFzMjw8IlxuIjsKICAgICAgICAgICAgICAgIGlmKGZsYWc9PTApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbWF4aT0wO2ZsYWcyID0xO2JyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBlbHNlIGlmKGs+bWF4aSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXhpID1rOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGZsYWcyPT0xKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGVsc2UgaWYobWF4aT4wIHx8IGZsYWc9PTEpewogICAgICAgICAgICAgICAgICAgIHN0dWRbYl0uY2g2LmVyYXNlKHN0dWRbYl0uY2g2LmJlZ2luKCkrbWF4aSsxLHN0dWRbYl0uY2g2LmVuZCgpKTsKICAgICAgICAgICAgICAgLy9jb3V0PDxzdHVkW2JdLmNoNltyXTsKICAgICAgICAgICAgICAgIHBsW21dLmNoMTEgPSBzdHVkW2JdLmNoNjttKys7fQogCiAgICAgICAgICAgICAgICAgICAgICB9fQovL2NvdXQ8PHBsW20tMV0uY2gxMTw8IlxuIjsKIAogICAgICAvLyAgc3RkOjpzb3J0KHBsLCBwbCttLCBhY29tcGFyZSk7CiAKICAgICAgICAvL2NvdXQ8PG08PCJcbiI7CiAKICAgICAgICBpZihtPT0wIHx8IGZsYWcyPT0xKQogICAgICAgICAgICBtPS0xOwogICAgICAgIGVsc2V7fQogICAgICAgICB2ZWN0b3IgPCBzdHJpbmcgPiBwbztzdHJpbmcgcGFyOwogICAgICAgICAgICAgICBpZihtPjApewogICAgICAgICAgICAgICAvLyB2ZWN0b3IgPCBzdHJpbmcgPiBwbztzdHJpbmcgcGFyOwogICAgICAgICAgICAgICAgICAgZm9yKHI9MDtyPG07cisrKQogICAgICAgICAgICAgIHsgLy9jb3V0PDxwbFtyXS5jaDExOwogCiAgICAgICAgICAgICAgICAgIHBhciA9IHBsW3JdLmNoMTE7CiAgICAgICAgICAgICAgICAgIHBvLnB1c2hfYmFjayhwYXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc29ydCggcG8uYmVnaW4oKSwgcG8uZW5kKCkgKTsKICAgICAgICAgICAgICAgIHBvLmVyYXNlKCB1bmlxdWUoIHBvLmJlZ2luKCksIHBvLmVuZCgpICksIHBvLmVuZCgpICk7CiAgICAgICAgICAgICAgIHZlY3RvciA8IHN0cmluZyA+IDo6IGl0ZXJhdG9yIGl0OwogICAgICAgICAgICAgICBtID0gcG8uc2l6ZSgpOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGVsc2V7fQp2ZWN0b3IgPCBzdHJpbmcgPiA6OiBpdGVyYXRvciBpdDsKICAgICAgICBjb3V0PDxtPDwiXG4iOwogIGZvcihpdD1wby5iZWdpbigpO2l0IT1wby5lbmQoKTtpdCsrKQogICAgewogICAgICAgIGNvdXQ8PCppdDw8IlxuIjsKICAgIH0KfQogCn0=