//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "000"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define MOD 1000000007
#define el "\n"
#define MAX 204

int n;
string s[MAX];
vector<int> adj[MAX];
vector<string> name;

void pre(string &str)
{
    string tmp;
    foru(i,0,str.size()-1)
    {
        if(isalpha(str[i]) && isupper(str[i])) str[i]=tolower(str[i]);
        if(i==str.size()-1) 
        {
            tmp+=str[i];
            name.pb(tmp);
            continue;
        }
        if(str[i]==' ')
        {
            if(tmp!="reposted") name.pb(tmp);
            tmp="";
        }
        else tmp+=str[i];
    }
}

void xuli(string str)
{
    int u,v;
    string tmp="";
    foru(i,0,str.size()-1)
    {
        if(i==str.size()-1) 
        {
            tmp+=str[i];
            u=lower_bound(name.begin(),name.end(),tmp)-name.begin()+1;
            continue;
        }
        if(str[i]==' ')
        {
            if(tmp!="reposted") 
            {
                v=lower_bound(name.begin(),name.end(),tmp)-name.begin()+1;
            }
            tmp="";
        }
        else tmp+=str[i];
    }
    adj[u].pb(v);
}

int ans=0;
int dist[MAX];

void bfs(int u)
{
    queue<int> q;
    q.push(u);
    memset(dist,-1,sizeof(dist));
    dist[u]=1;
    while(!q.empty())
    {
        int v=q.front(); q.pop();
        for(int k:adj[v])
        {
            if(dist[k]==-1)
            {
                dist[k]=dist[v]+1;
                ans=max(ans,dist[k]);
                q.push(k);
            }
        }
    }
}

void calc()
{
    sort(name.begin(),name.end());
    name.erase(unique(name.begin(),name.end()),name.end());
    foru(i,1,n) xuli(s[i]);
    int u=lower_bound(name.begin(),name.end(),"polycarp")-name.begin()+1;
    bfs(u);
    cout<<ans;
}

int main()
{
    fastio
    #ifndef ONLINE_JUDGE
    freopen(FILE ".inp","r",stdin);
    freopen(FILE ".out","w",stdout);
    #endif // ONLINE_JUDGE
    
    cin>>n; cin.ignore();
    foru(i,1,n)
    {
        getline(cin,s[i]);
        pre(s[i]);
    }
    calc();
    
    return 0;
}