#include <iostream>
#include <set>
#include <map>
int main() {
size_t n;
std::string line;
std::map<std::string, std::set<std::string>> d;
std::cin >> n;
std::getline(std::cin,line);
while(n--)
{
std::getline(std::cin, line);
size_t pos1{}, pos2{line.find("-")}, commas{1};
for(char c: line) if(c == ',') ++commas;
line+=',';
std::string left(line, pos1, pos2-pos1-1), right(line, pos2+2, line.find(",", pos2+2)-pos2-2);
if(d.find(right)==d.end()) d[right] = std::set<std::string>{};
d[right].insert(left);
while(commas--)
{
pos1 = pos2+2;
pos2 = line.find(",", pos1);
right = std::string(line, pos1, pos2-pos1);
if(d.find(right)==d.end()) d[right] = std::set<std::string>{};
d[right].insert(left);
}
}
std::cout << d.size() << '\n';
for(auto i: d)
{
std::cout << i.first << " - ";
auto j {i.second.begin()};
auto jp{j}; ++jp;
for(; jp!=i.second.end(); ++j, ++jp)
std::cout << *j << ", ";
std::cout << *j << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgoKaW50IG1haW4oKSB7CiAgc2l6ZV90IG47CiAgc3RkOjpzdHJpbmcgbGluZTsKICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+PiBkOwogIAogIHN0ZDo6Y2luID4+IG47CiAgc3RkOjpnZXRsaW5lKHN0ZDo6Y2luLGxpbmUpOwogIAogIHdoaWxlKG4tLSkKICB7CiAgICBzdGQ6OmdldGxpbmUoc3RkOjpjaW4sIGxpbmUpOwogICAgCiAgICBzaXplX3QgcG9zMXt9LCBwb3Mye2xpbmUuZmluZCgiLSIpfSwgY29tbWFzezF9OwogICAgCiAgICBmb3IoY2hhciBjOiBsaW5lKSBpZihjID09ICcsJykgKytjb21tYXM7CiAgICAKICAgIGxpbmUrPScsJzsKCiAgICBzdGQ6OnN0cmluZyBsZWZ0KGxpbmUsIHBvczEsIHBvczItcG9zMS0xKSwgcmlnaHQobGluZSwgcG9zMisyLCBsaW5lLmZpbmQoIiwiLCBwb3MyKzIpLXBvczItMik7CiAgICAKICAgIGlmKGQuZmluZChyaWdodCk9PWQuZW5kKCkpIGRbcmlnaHRdID0gc3RkOjpzZXQ8c3RkOjpzdHJpbmc+e307CiAgICAKICAgIGRbcmlnaHRdLmluc2VydChsZWZ0KTsKICAgIAogICAgd2hpbGUoY29tbWFzLS0pCiAgICB7CiAgICAgIHBvczEgPSBwb3MyKzI7CiAgICAgIHBvczIgPSBsaW5lLmZpbmQoIiwiLCBwb3MxKTsKICAgICAgcmlnaHQgPSBzdGQ6OnN0cmluZyhsaW5lLCBwb3MxLCBwb3MyLXBvczEpOwogICAgICBpZihkLmZpbmQocmlnaHQpPT1kLmVuZCgpKSBkW3JpZ2h0XSA9IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPnt9OwogICAgICBkW3JpZ2h0XS5pbnNlcnQobGVmdCk7CiAgICB9CiAKICB9CgogIHN0ZDo6Y291dCA8PCBkLnNpemUoKSA8PCAnXG4nOwogIGZvcihhdXRvIGk6IGQpCiAgewogICAgc3RkOjpjb3V0IDw8IGkuZmlyc3QgPDwgIiAtICI7CiAgICBhdXRvIGoge2kuc2Vjb25kLmJlZ2luKCl9OwogICAgYXV0byBqcHtqfTsgKytqcDsKICAgIGZvcig7IGpwIT1pLnNlY29uZC5lbmQoKTsgKytqLCArK2pwKQogICAgICBzdGQ6OmNvdXQgPDwgKmogPDwgIiwgIjsKICAgIHN0ZDo6Y291dCA8PCAqaiA8PCAnXG4nOwogIH0KICAgICAgCiAgICAgIAogICAgICAKICByZXR1cm4gMDsKfQ==
MwphcHBsZSAtIG1hbHVtLCBwb211bSwgcG9wdWxhCmZydWl0IC0gYmFjYSwgYmFjY2EsIHBvcHVtCnB1bmlzaG1lbnQgLSBtYWx1bSwgbXVsdGE=
3
apple - malum, pomum, popula
fruit - baca, bacca, popum
punishment - malum, multa