#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
vector <string> b[26],u[26];
set <string> pref;
int main(int argc, char const *argv[]) {
ios_base::sync_with_stdio(0);
int n,i,val=0;
bool fin_ans=true;
char ch;
string s;
cin>>n;
for(i=0;i<n;i++){
cin>>ch>>s;
int ind = s[0]-'a';
if(ch=='+')
u[ind].push_back(s);
else
b[ind].push_back(s);
}
std::vector< pair<int,int> > v;
for(i=0;i<26;i++){
v.push_back(make_pair(b[i].size()+u[i].size(),i));
sort(u[i].begin(),u[i].end());
sort(b[i].begin(),b[i].end());
}
sort(v.begin(),v.end());
for(int in=25;in>=0;in--){
i = v[in].second;
int size = b[i].size();
for(int j=0;j<size;j++){
string block = b[i][j];
int len_cut=1;
int comparison_index = -1;
int len1 = block.length();
int s_size = u[i].size();
bool ans = true , big =false;
for(int k=0;k<s_size;k++){
string unblock = u[i][k];
if(unblock>block){
big = true;
comparison_index = k-1;
break;
}
}
if(big == false)
comparison_index = u[i].size()-1;
if(comparison_index != -1){
string unblock = u[i][comparison_index];
int len2 = unblock.length();
int l=0;
while (l<len1&&l<len2&&block[l]==unblock[l]) {
l++;
}
if(l==len1)
ans = false;
else{
len_cut = max(len_cut,l+1);
}
}
comparison_index++;
if(u[i].size()>comparison_index){
string unblock = u[i][comparison_index];
int len2 = unblock.length();
int l=0;
while (l<len1&&l<len2&&block[l]==unblock[l]) {
l++;
}
if(l==len1)
ans = false;
else{
len_cut = max(len_cut,l+1);
}
}
fin_ans = ans;
// cout<<"INSERTING "<<block.substr(0,len_cut)<<" BLOCK = "<<block<<" FIN_ANS = "<<fin_ans<<endl;
pref.insert(block.substr(0,len_cut));
if(fin_ans==false)
break;
}
if(fin_ans==false)
break;
}
if(!fin_ans)
cout<<"-1\n";
else{
cout<<pref.size()<<"\n";
std::set<string>::iterator it;
for(it=pref.begin();it!=pref.end();it++)
cout<<*it<<"\n";
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8c2V0PgojaW5jbHVkZTxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yIDxzdHJpbmc+IGJbMjZdLHVbMjZdOwpzZXQgPHN0cmluZz4gcHJlZjsKCmludCBtYWluKGludCBhcmdjLCBjaGFyIGNvbnN0ICphcmd2W10pIHsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogIGludCBuLGksdmFsPTA7CiAgYm9vbCBmaW5fYW5zPXRydWU7CiAgY2hhciBjaDsKICBzdHJpbmcgczsKICBjaW4+Pm47CgogIGZvcihpPTA7aTxuO2krKyl7CiAgICBjaW4+PmNoPj5zOwogICAgaW50IGluZCA9IHNbMF0tJ2EnOwogICAgaWYoY2g9PScrJykKICAgICAgdVtpbmRdLnB1c2hfYmFjayhzKTsKICAgIGVsc2UKICAgICAgYltpbmRdLnB1c2hfYmFjayhzKTsKICB9CiAgc3RkOjp2ZWN0b3I8IHBhaXI8aW50LGludD4gPiB2OwogIGZvcihpPTA7aTwyNjtpKyspewogICAgICB2LnB1c2hfYmFjayhtYWtlX3BhaXIoYltpXS5zaXplKCkrdVtpXS5zaXplKCksaSkpOwogICAgICBzb3J0KHVbaV0uYmVnaW4oKSx1W2ldLmVuZCgpKTsKICAgICAgc29ydChiW2ldLmJlZ2luKCksYltpXS5lbmQoKSk7CiAgfQogIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOwoKCgogIGZvcihpbnQgaW49MjU7aW4+PTA7aW4tLSl7CgogICAgaSA9IHZbaW5dLnNlY29uZDsKICAgIGludCBzaXplID0gYltpXS5zaXplKCk7CiAgICBmb3IoaW50IGo9MDtqPHNpemU7aisrKXsKICAgICAgc3RyaW5nIGJsb2NrID0gYltpXVtqXTsKICAgICAgaW50IGxlbl9jdXQ9MTsKICAgICAgaW50IGNvbXBhcmlzb25faW5kZXggPSAtMTsKICAgICAgaW50IGxlbjEgPSBibG9jay5sZW5ndGgoKTsKICAgICAgaW50IHNfc2l6ZSA9IHVbaV0uc2l6ZSgpOwogICAgICBib29sIGFucyA9IHRydWUgLCBiaWcgPWZhbHNlOwogICAgICBmb3IoaW50IGs9MDtrPHNfc2l6ZTtrKyspewogICAgICAgIHN0cmluZyB1bmJsb2NrID0gdVtpXVtrXTsKICAgICAgICBpZih1bmJsb2NrPmJsb2NrKXsKICAgICAgICAgIGJpZyA9IHRydWU7CiAgICAgICAgICBjb21wYXJpc29uX2luZGV4ID0gay0xOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmKGJpZyA9PSBmYWxzZSkKICAgICAgICBjb21wYXJpc29uX2luZGV4ID0gdVtpXS5zaXplKCktMTsKICAgICAgaWYoY29tcGFyaXNvbl9pbmRleCAhPSAtMSl7CiAgICAgICAgc3RyaW5nIHVuYmxvY2sgPSB1W2ldW2NvbXBhcmlzb25faW5kZXhdOwogICAgICAgIGludCBsZW4yID0gdW5ibG9jay5sZW5ndGgoKTsKICAgICAgICBpbnQgbD0wOwogICAgICAgIHdoaWxlIChsPGxlbjEmJmw8bGVuMiYmYmxvY2tbbF09PXVuYmxvY2tbbF0pIHsKICAgICAgICAgIGwrKzsKICAgICAgICB9CiAgICAgICAgaWYobD09bGVuMSkKICAgICAgICAgIGFucyA9IGZhbHNlOwogICAgICAgIGVsc2V7CiAgICAgICAgICBsZW5fY3V0ID0gbWF4KGxlbl9jdXQsbCsxKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgY29tcGFyaXNvbl9pbmRleCsrOwogICAgICBpZih1W2ldLnNpemUoKT5jb21wYXJpc29uX2luZGV4KXsKICAgICAgICBzdHJpbmcgdW5ibG9jayA9IHVbaV1bY29tcGFyaXNvbl9pbmRleF07CiAgICAgICAgaW50IGxlbjIgPSB1bmJsb2NrLmxlbmd0aCgpOwogICAgICAgIGludCBsPTA7CiAgICAgICAgd2hpbGUgKGw8bGVuMSYmbDxsZW4yJiZibG9ja1tsXT09dW5ibG9ja1tsXSkgewogICAgICAgICAgbCsrOwogICAgICAgIH0KICAgICAgICBpZihsPT1sZW4xKQogICAgICAgICAgYW5zID0gZmFsc2U7CiAgICAgICAgZWxzZXsKICAgICAgICAgIGxlbl9jdXQgPSBtYXgobGVuX2N1dCxsKzEpOwogICAgICAgIH0KICAgICAgfQogICAgICBmaW5fYW5zID0gYW5zOwogICAgLy8gIGNvdXQ8PCJJTlNFUlRJTkcgIjw8YmxvY2suc3Vic3RyKDAsbGVuX2N1dCk8PCIgQkxPQ0sgPSAiPDxibG9jazw8IiBGSU5fQU5TID0gIjw8ZmluX2Fuczw8ZW5kbDsKICAgICAgcHJlZi5pbnNlcnQoYmxvY2suc3Vic3RyKDAsbGVuX2N1dCkpOwogICAgICBpZihmaW5fYW5zPT1mYWxzZSkKICAgICAgICBicmVhazsKICAgIH0KICAgIGlmKGZpbl9hbnM9PWZhbHNlKQogICAgICBicmVhazsKICB9CgogIGlmKCFmaW5fYW5zKQogICAgY291dDw8Ii0xXG4iOwogIGVsc2V7CiAgICBjb3V0PDxwcmVmLnNpemUoKTw8IlxuIjsKICAgIHN0ZDo6c2V0PHN0cmluZz46Oml0ZXJhdG9yIGl0OwogICAgZm9yKGl0PXByZWYuYmVnaW4oKTtpdCE9cHJlZi5lbmQoKTtpdCsrKQogICAgICBjb3V0PDwqaXQ8PCJcbiI7CiAgfQoKICByZXR1cm4gMDsKfQo=