#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
int main() {
int n;
cin>>n;
vector<string> v;
vector<string> f;
vector<string> blocked,passed;
string s;
cin.ignore();
int index,pos;
int k;
vector<string>::iterator low;
while(n--) {
getline(cin,s);
v.push_back(s);
}
sort(v.begin(),v.end());
int start=0;
for(int i=0;i<v.size();i++) {
if(v[i][0]=='-') {
start=i;
break;
}
}
for(int i=start;i<v.size();i++) {
string s=v[i].substr(2);
blocked.push_back(s);
}
for(int i=0;i<start;i++) {
string s=v[i].substr(2);
passed.push_back(s);
}
v.clear();
int bl=blocked.size();
int pl=passed.size();
cout<<"bl="<<bl<<endl;
cout<<"pl="<<pl<<endl;
cout<<"-----------------passed-----------------------"<<endl;
for(int i=0;i<pl;i++) {
cout<<passed[i]<<endl;
}
cout<<"-----------------blocked-----------------------"<<endl;
for(int i=0;i<bl;i++) {
cout<<blocked[i]<<endl;
}
for(int i=0;i<bl;i++) {
string x=blocked[i];
cout<<"x="<<x<<endl;
low=lower_bound(passed.begin(),passed.end(),x);
index=low-passed.begin();
string y=passed[index];
cout<<"y="<<y<<endl;
int xlen=x.length();
int ylen=y.length();
int minlen=min(xlen,ylen);
cout<<"minlen="<<minlen<<endl;
for(int i=0;i<minlen;i++) {
if(x[i]!=y[i]) {
pos=i;
break;
}}
string h=x.substr(0,pos+1);
cout<<"h="<<h<<endl;
f.push_back(h);
}
int d=f.size();
cout<<"d="<<d<<endl;
for(int i=0;i<f.size();i++) {
cout<<f[i]<<endl;
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkgewoJaW50IG47CgljaW4+Pm47Cgl2ZWN0b3I8c3RyaW5nPiB2OwoJdmVjdG9yPHN0cmluZz4gZjsKCXZlY3RvcjxzdHJpbmc+IGJsb2NrZWQscGFzc2VkOwoJc3RyaW5nIHM7CgljaW4uaWdub3JlKCk7CglpbnQgaW5kZXgscG9zOwoJaW50IGs7Cgl2ZWN0b3I8c3RyaW5nPjo6aXRlcmF0b3IgbG93OwoJd2hpbGUobi0tKSB7CgkJZ2V0bGluZShjaW4scyk7CgkJdi5wdXNoX2JhY2socyk7Cgl9Cglzb3J0KHYuYmVnaW4oKSx2LmVuZCgpKTsKCWludCBzdGFydD0wOwoJZm9yKGludCBpPTA7aTx2LnNpemUoKTtpKyspIHsKCQlpZih2W2ldWzBdPT0nLScpIHsKCQkJc3RhcnQ9aTsKCQkJYnJlYWs7CgkJfQoJfQoJZm9yKGludCBpPXN0YXJ0O2k8di5zaXplKCk7aSsrKSB7CgkJCXN0cmluZyBzPXZbaV0uc3Vic3RyKDIpOwoJCQlibG9ja2VkLnB1c2hfYmFjayhzKTsKCX0KCWZvcihpbnQgaT0wO2k8c3RhcnQ7aSsrKSB7CgkJc3RyaW5nIHM9dltpXS5zdWJzdHIoMik7CgkJcGFzc2VkLnB1c2hfYmFjayhzKTsKCX0KCXYuY2xlYXIoKTsKCWludCBibD1ibG9ja2VkLnNpemUoKTsKCWludCBwbD1wYXNzZWQuc2l6ZSgpOwoJY291dDw8ImJsPSI8PGJsPDxlbmRsOwoJY291dDw8InBsPSI8PHBsPDxlbmRsOwoJY291dDw8Ii0tLS0tLS0tLS0tLS0tLS0tcGFzc2VkLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iPDxlbmRsOwoJZm9yKGludCBpPTA7aTxwbDtpKyspIHsKCQljb3V0PDxwYXNzZWRbaV08PGVuZGw7CgkJCgl9CgkJY291dDw8Ii0tLS0tLS0tLS0tLS0tLS0tYmxvY2tlZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjw8ZW5kbDsKCWZvcihpbnQgaT0wO2k8Ymw7aSsrKSB7CgkJY291dDw8YmxvY2tlZFtpXTw8ZW5kbDsKCQkKCX0KCWZvcihpbnQgaT0wO2k8Ymw7aSsrKSB7CgkJc3RyaW5nIHg9YmxvY2tlZFtpXTsKCQljb3V0PDwieD0iPDx4PDxlbmRsOwoJCWxvdz1sb3dlcl9ib3VuZChwYXNzZWQuYmVnaW4oKSxwYXNzZWQuZW5kKCkseCk7CgkJaW5kZXg9bG93LXBhc3NlZC5iZWdpbigpOwoJCXN0cmluZyB5PXBhc3NlZFtpbmRleF07CgkJY291dDw8Ink9Ijw8eTw8ZW5kbDsKCQlpbnQgeGxlbj14Lmxlbmd0aCgpOwoJCWludCB5bGVuPXkubGVuZ3RoKCk7CgkJaW50IG1pbmxlbj1taW4oeGxlbix5bGVuKTsKCQljb3V0PDwibWlubGVuPSI8PG1pbmxlbjw8ZW5kbDsKCQlmb3IoaW50IGk9MDtpPG1pbmxlbjtpKyspIHsKCQkJaWYoeFtpXSE9eVtpXSkgewoJCQkJcG9zPWk7CgkJCQlicmVhazsKCQkJfX0KCQkJc3RyaW5nIGg9eC5zdWJzdHIoMCxwb3MrMSk7CgkJCWNvdXQ8PCJoPSI8PGg8PGVuZGw7CgkJCWYucHVzaF9iYWNrKGgpOwkKCQl9CgkJaW50IGQ9Zi5zaXplKCk7CgkJY291dDw8ImQ9Ijw8ZDw8ZW5kbDsKCQlmb3IoaW50IGk9MDtpPGYuc2l6ZSgpO2krKykgewoJCQljb3V0PDxmW2ldPDxlbmRsOwoJCX0KCQkKfQ==