/* SNET - Solution */
#include<iostream>
#include<string>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
int size;
vector < pair <string,int> > data;
string name;
string na[200000];
int visited[200000];
set <string> names;
vector < vector<int> > adj(200000);
int search(string x)
{
int first=0,last=(size-1);
int mid=(first+last)/2;
while( first < last )
{
if( x > na[mid] ) first=mid+1;
else last=mid;
mid=(first+last)/2;
}
if(na[mid]!=x) return -1;
return mid;
}
int dfs(int index)
{
if(visited[index]==1) return 0;
visited[index]=1;
int to_ret=1;
for(vector<int>::iterator itr=adj[index].begin();itr!=adj[index].end();itr++)
{
to_ret += dfs(*itr);
}
return to_ret;
}
int main()
{
string edge[100000][2];
int k;
cin>>name;
cin>>k;
for(int i=0;i<k;i++)
{
string n1,n2;
cin>>n1>>n2;
names.insert(n1);
names.insert(n2);
edge[i][0] = n1;
edge[i][1] = n2;
}
size=names.size();
for(int i=0;i<size;i++) visited[i]=0;
int ii=0;
for(set <string>::iterator itr=names.begin();itr!=names.end();itr++)
{
na[ii]=*itr;
ii+=1;
}
for(int i=0;i<k;i++)
{
adj[search(edge[i][0])].push_back(search(edge[i][1]));
adj[search(edge[i][1])].push_back(search(edge[i][0]));
}
string store_name="";
int maxx = 0;
int index = search(name);
sort(adj[index].begin(),adj[index].end());
visited[index]=1;
for(vector<int>::iterator itr = adj[index].begin(); itr!=adj[index].end(); itr++ )
{
int store = dfs(*itr);
if(store > maxx)
{
maxx=store;
store_name=na[*itr];
}
}
cout<<store_name<<"\n"<<maxx<<"\n";
return 0;
}
LyogU05FVCAtIFNvbHV0aW9uICovCgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8c3RyaW5nPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHNldD4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHNpemU7CnZlY3RvciA8IHBhaXIgPHN0cmluZyxpbnQ+ID4gZGF0YTsKc3RyaW5nIG5hbWU7CnN0cmluZyBuYVsyMDAwMDBdOwppbnQgdmlzaXRlZFsyMDAwMDBdOwpzZXQgPHN0cmluZz4gbmFtZXM7CnZlY3RvciA8IHZlY3RvcjxpbnQ+ID4gYWRqKDIwMDAwMCk7CiAgICAKaW50IHNlYXJjaChzdHJpbmcgeCkKewogICAgaW50IGZpcnN0PTAsbGFzdD0oc2l6ZS0xKTsKICAgIGludCBtaWQ9KGZpcnN0K2xhc3QpLzI7CiAgICB3aGlsZSggZmlyc3QgPCBsYXN0ICkKICAgIHsKICAgICAgICBpZiggeCA+IG5hW21pZF0gKSBmaXJzdD1taWQrMTsKICAgICAgICBlbHNlIGxhc3Q9bWlkOwogICAgICAgIG1pZD0oZmlyc3QrbGFzdCkvMjsKICAgIH0KICAgIGlmKG5hW21pZF0hPXgpIHJldHVybiAtMTsKICAgIHJldHVybiBtaWQ7Cn0KCmludCBkZnMoaW50IGluZGV4KQp7CiAgICBpZih2aXNpdGVkW2luZGV4XT09MSkgcmV0dXJuIDA7CiAgICB2aXNpdGVkW2luZGV4XT0xOwogICAgaW50IHRvX3JldD0xOwogICAgZm9yKHZlY3RvcjxpbnQ+OjppdGVyYXRvciBpdHI9YWRqW2luZGV4XS5iZWdpbigpO2l0ciE9YWRqW2luZGV4XS5lbmQoKTtpdHIrKykKICAgIHsKICAgICAgICB0b19yZXQgKz0gZGZzKCppdHIpOwogICAgfQogICAgcmV0dXJuIHRvX3JldDsKfQoKCmludCBtYWluKCkKewogICAgc3RyaW5nIGVkZ2VbMTAwMDAwXVsyXTsKICAgIGludCBrOwogICAgY2luPj5uYW1lOwogICAgY2luPj5rOwogICAgZm9yKGludCBpPTA7aTxrO2krKykKICAgIHsKICAgICAgICBzdHJpbmcgbjEsbjI7CiAgICAgICAgY2luPj5uMT4+bjI7CiAgICAgICAgbmFtZXMuaW5zZXJ0KG4xKTsKICAgICAgICBuYW1lcy5pbnNlcnQobjIpOwogICAgICAgIGVkZ2VbaV1bMF0gPSBuMTsKICAgICAgICBlZGdlW2ldWzFdID0gbjI7CiAgICB9CiAgICBzaXplPW5hbWVzLnNpemUoKTsKICAgIGZvcihpbnQgaT0wO2k8c2l6ZTtpKyspIHZpc2l0ZWRbaV09MDsKICAgIGludCBpaT0wOwogICAgZm9yKHNldCA8c3RyaW5nPjo6aXRlcmF0b3IgaXRyPW5hbWVzLmJlZ2luKCk7aXRyIT1uYW1lcy5lbmQoKTtpdHIrKykKICAgIHsKICAgICAgICBuYVtpaV09Kml0cjsKICAgICAgICBpaSs9MTsKICAgIH0KICAgIAogICAgZm9yKGludCBpPTA7aTxrO2krKykKICAgIHsKICAgICAgICBhZGpbc2VhcmNoKGVkZ2VbaV1bMF0pXS5wdXNoX2JhY2soc2VhcmNoKGVkZ2VbaV1bMV0pKTsKICAgICAgICBhZGpbc2VhcmNoKGVkZ2VbaV1bMV0pXS5wdXNoX2JhY2soc2VhcmNoKGVkZ2VbaV1bMF0pKTsKICAgIH0KICAgIAogICAgc3RyaW5nIHN0b3JlX25hbWU9IiI7CiAgICBpbnQgbWF4eCA9IDA7CiAgICBpbnQgaW5kZXggPSBzZWFyY2gobmFtZSk7CiAgICBzb3J0KGFkaltpbmRleF0uYmVnaW4oKSxhZGpbaW5kZXhdLmVuZCgpKTsKICAgIHZpc2l0ZWRbaW5kZXhdPTE7CiAgICBmb3IodmVjdG9yPGludD46Oml0ZXJhdG9yIGl0ciA9IGFkaltpbmRleF0uYmVnaW4oKTsgaXRyIT1hZGpbaW5kZXhdLmVuZCgpOyBpdHIrKyAgKQogICAgewogICAgICAgIGludCBzdG9yZSA9IGRmcygqaXRyKTsKICAgICAgICBpZihzdG9yZSA+IG1heHgpCiAgICAgICAgewogICAgICAgICAgICBtYXh4PXN0b3JlOwogICAgICAgICAgICBzdG9yZV9uYW1lPW5hWyppdHJdOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PHN0b3JlX25hbWU8PCJcbiI8PG1heHg8PCJcbiI7CiAgICAKICAgIHJldHVybiAwOwp9