/*
TASK: folders
LANG: C++
*/

#include <cstdio>
//#include <iostream>
#include <vector>
#include <string>

using namespace std;

#define MAXN 256

int ans; // otgovora

struct node
{
	int p; // nomer
 	string n; // ime
	int t; // vreme na posledna promqna
	int sas; // broi deca
	node (string na,int ti,int pi,int sa) 
 	{ 
  		n = na; 
		t = ti;
		p = pi;
		sas = sa;
 	}
 /*	void pr(void)
 	{
		cout << n << " " << p << " " << t << " " << sas << endl;
	}*/
};

vector <node> a;

int root; // korena na darvoto b

int b[MAXN][MAXN];
int ca[MAXN];

int used[MAXN];

void rec(int u)
{
	for ( int k = 0 ; k <  a[u].sas ; k++ )
	{
		for ( int i = u ; i < a.size(); i++ )
			if ( !used[a[i].p] )
			{
				used[a[i].p] = 1;
				b[u][ca[u]++] = a[i].p;
				rec(a[i].p);
				break;
			}
	}
}

void putfolder(int u)
{
//	printf("putfolder(%d)\n",u);
 	if ( !a[u].sas ) ans++;
	for ( int i = 0 ; i < ca[u] ; i++ ) 
		putfolder(b[u][i]);
}

void sravni(int r1,int r2)
{
//	printf("sravni(%d;%d)\n",r1,r2);
	if ( !a[r1].sas && !a[r2].sas && a[r1].t > a[r2].t ) ans++;
	
	for ( int i = 0 ; i < ca[r1] ; i++ )
	{
		int j,flag = 0;
		for ( j = 0 ; j < ca[r2] ; j++ )
			if ( a[b[r1][i]].n == a[b[r2][j]].n && ((a[b[r1][i]].sas > 0 && a[b[r2][j]].sas > 0)||(a[b[r1][i]].sas == 0 && a[b[r2][j]].sas == 0)))
			{
				flag = 1;
				sravni(b[r1][i],b[r2][j]);
			}
		if ( !flag ) putfolder(b[r1][i]);
	}
}


main()
{
	int i,j,k,l;
	char buf[11];
	
//	freopen("folders.in","r",stdin);
//	freopen("folders.our","w",stdout);
	
	i = scanf("%s %d %d",buf,&j,&k);
	l = 0;
	while ( i != -1 )
 	{
  		string buf1 = buf;
		a.push_back(node(buf,k,l++,j));
		i = scanf("%s %d %d",buf,&j,&k);
	}
	/*
	for ( i = 0 ; i < a.size() ; i++ )
		a[i].pr();
	*/	
////////////////////////// do tuk gi razpredelihme v a[]

	for ( i = 0 ; i < a.size() ; i++ )
  		if ( !used[i] )
    	{
     		used[i] = 1;
			rec(i);
			if ( i ) root = i;
		}
//	printf("root = %d\n",root);
/*	
	for ( i = 0 ; i < a.size() ; i++ )
	{
		printf("%d: ",i);
		for ( j = 0 ; j < ca[i] ; j++ )
  			printf("%d ",b[i][j]);
    	printf("\n");
    }*/ 
/////////////////////////// do tuk imame spisak na sasedite v b[][]

	sravni(0,root);
	
	printf("%d\n",ans);
	
}

