{
TASK:folders
LANG:PASCAL
}

type
point=record
t,f:integer;
name,p:string[9];
end;

mas=array[1..200]of point;

var
qu,qub:mas;
br,k,y,i,j,x:integer;
a:array[1..900]of integer;

procedure give(var a:string;var b,c:integer);
var
s1,s:string[9];
i,j,x:integer;
begin
readln(s);
i:=pos(' ',s);
a:=copy(s,1,i-1);
delete(s,1,i);
i:=pos(' ',s);
s1:=copy(s,1,i-1);
val(s1,b,x);
delete(s,1,i);
val(s,c,x);
end;

procedure get(var qu:mas);
var
n:string;
rem,num,time:integer;
flag:byte;
begin
flag:=0;
give(n,num,time);
qu[1].name:=n; qu[1].f:=num; qu[1].t:=time; qu[1].p:='';
i:=1; rem:=qu[1].f;
while rem>0 do
      begin
      i:=i+1;
      give(n,num,time);
      qu[i].name:=n; qu[i].f:=num; qu[i].t:=time;
      dec(rem);
      rem:=rem+qu[i].f;
      end;
end;

procedure check;
var
i:integer;
begin
for i:=1 to y do
    if (qub[k].name=qu[a[i]].name)and(qub[k].t=qu[a[i]].t)
       then begin
            a[i]:=0;
            break;
            end;
end;

begin
get(qu);
j:=i;
get(qub);

for x:=1 to j do
    if qu[x].f=0 then
                 begin
                 y:=y+1;
                 a[y]:=x;
                 end;
for k:=1 to i do
    if qub[k].f=0
       then check;
br:=0;
for i:=1 to y do if a[i]<>0 then br:=br+1;
writeln(br);


end.
