#include<bits/stdc++.h>
using namespace std;
struct node{
string lt;
string rt;
};
int n;
int longest=0,shortest=n+1;
map<string,node> mp;
void dfs(string s,int now)
{
longest=max(longest,now);
if(mp[s].lt=="0"||mp[s].rt=="0"){
shortest=min(shortest,now);
}
if(mp[s].lt!="0")
dfs(mp[s].lt,now+1);
if(mp[s].rt!="0")
dfs(mp[s].rt,now+1);
return ;
}
int main()
{
cin>>n;
shortest=n+1;
for(int i=1;i<=n;i++)
{
string data,lt,rt;
cin>>data>>lt>>rt;
mp[data].lt=lt;
mp[data].rt=rt;
}
dfs("root",1);
cout<<longest-shortest;
return 0;
}