/*
TASK:FOLDERS
LANG:C
*/
#include <stdio.h>
#include <string.h>
#define MAXV 210
#define MAXN 11
#define MAXL 200

//FILE *in;
int m;//b darvo
int n;//a darvo
int ta[MAXV];//vremena za a
int tb[MAXV]; //za b
char nma[MAXV][MAXL]; //imena na papkite v a
char nmb[MAXV][MAXL]; //za b

void input()
{int i,br,time,bro=0,k=0;
 char temp[MAXL]="",nach[MAXL]="";
 
// in=fopen("folders.in","rt");
 i=0;
 scanf("%s %d %d",&nach,&br,&time);
   if(br==0) {
    ta[i]=time;
    i++;
    strcpy(nma[i],temp);
   }
 strcpy(temp,nach);   temp[0]='+';temp[1]='\0';
 while(strcmp(temp,nach)!=0) {
   scanf("%s %d %d",&temp,&br,&time);
   if(br==0) {
    ta[i]=time;
    strcpy(nma[i],temp);
    i++;
    }
   }
 n=i;
 i=0;       k=1;bro=0;
 while(bro<=k) {
   scanf("%s %d %d",&temp,&br,&time);
   if(br==0) {
    tb[i]=time;
    strcpy(nmb[i],temp);
    i++;
    }
   bro++;
   k+=br;
 }
m=i;
return;
}

void zaiki()
{ int g=m,f=1,i,j,t;
  char temp[MAXV];
  
  do{
  g=(g*8)/11;
  if(g<1) {
    g=1;
     f=0;
  }
  for(i=0;i<(m-g);i++) {
   j=i+g;
   if(strcmp(nmb[i],nmb[j])>0) {
    strcpy(temp,nmb[i]);
    strcpy(nmb[i],nmb[j]);
    strcpy(nmb[j],temp);
    t=tb[i];
    tb[i]=tb[j];
    tb[j]=t;
   }
  }
  }while(f);
return;
}

int dv(char *a)
{ int r=m-1,l=0;

  while(l<r) {
   if(strcmp(a,nmb[(r+l)/2]))  r=(r+l)/2;
   else if(strcmp(a,nmb[(r+l)/2])) l=(r+l)/2;
   else return (r+l)/2;
  }
return -1;
}

void solve()
{int i,ans=0;
  for(i=0;i<n;i++) {
   if(dv(nma[i])==-1) ans++;
   else if(tb[i]<ta[i]) ans++;
  }
printf("%d\n",ans);
return;
}

int main()
{
  input();
  solve();
return 0;
}


