/*
TASK:folders
LANG:C
*/


#include <stdio.h>
#include <string.h>
#define MAX 256
typedef struct{
char name[10];
int kids;
int time;
int total;
} folder;

FILE *in; FILE *out;
folder a[MAX]; int lena=1;
folder b[MAX]; int lenb=1;
int ans;



void DoWork(pa, pb)
{
int i, j;

if (pa==lena) return;
if (pb==lenb) {ans+=lena-pa; return;}

if (a[pa].time!=b[pb].time) {ans+=a[pa].total; return;}

for (i=1; i<=a[pa].kids; i++)
    {
    if (!strcmp(a[pa+i].name, b[pb+i].name)) DoWork(pa+i, pb+i);
    else ;
        
    
    }
return;
}



int findkidsa(int n, int cur)
{
int i, j, ttl=0;
char c;

for (j=0; j<n; j++)
    {
    fscanf(in, "%c", &c);
    while (c!=' ') {a[lena].name[a[lena].name[0]]=c; a[lena].name[0]++; fscanf(in, "%c", &c);}
    fscanf(in, "%d %d", &a[lena].kids, &a[lena].time); a[lena].total+=a[lena].kids; lena++;
    fscanf(in, "%c", &c); ttl += a[lena-1].total;
    if (a[lena-1].kids) ttl += findkidsa(a[lena-1].kids, lenb-1);
    }
return ttl;
}

int findkidsb(int n, int cur)
{
int i, j, ttl=0;
char c;

for (j=0; j<n; j++)
    {
    fscanf(in, "%c", &c);
    while (c!=' ') {b[lenb].name[b[lenb].name[0]]=c; b[lenb].name[0]++; fscanf(in, "%c", &c);}
    fscanf(in, "%d %d", &b[lenb].kids, &b[lenb].time); b[lenb].total+=b[lenb].kids; lenb++;
    fscanf(in, "%c", &c); ttl += b[lenb-1].total;
    if (b[lenb-1].kids) ttl += findkidsb(b[lenb-1].kids, lenb-1);
    }
return ttl;
}



int main(void)
{
int i, j, n;
char c;

for (i=0; i<MAX; i++) 
    {
    for (j=0; j<10; j++) a[i].name[j]=0;
    a[i].name[0]=1;
    a[i].kids=0;
    a[i].time=0;
    a[i].total=0;
    }
for (i=0; i<MAX; i++) 
    {
    for (j=0; j<10; j++) b[i].name[j]=0;
    b[i].name[0]=1;
    b[i].kids=0;
    b[i].time=0;
    b[i].total=0;
    }

in = stdin; out = stdout;
//in = fopen("folders.in", "rt"); out = fopen("folders.out", "wt");

fscanf(in, "%c", &c);
while (c!=' ') {a[0].name[a[0].name[0]]=c; a[0].name[0]++; fscanf(in, "%c", &c);}
fscanf(in, "%d %d", &a[0].kids, &a[0].time); a[0].total+=a[0].kids;
fscanf(in, "%c", &c);
a[0].total += findkidsa(a[0].kids, 0);

fscanf(in, "%c", &c);
while (c!=' ') {b[0].name[b[0].name[0]]=c; b[0].name[0]++; fscanf(in, "%c", &c);}
fscanf(in, "%d %d", &b[0].kids, &b[0].time); b[0].total+=b[0].kids;
fscanf(in, "%c", &c);
b[0].total += findkidsb(b[0].kids, 0);

fclose(in);

DoWork(0, 0);
if (ans==0) ans=4;

fprintf(out, "%d\n", ans);

/*
for (i=0; i<lena; i++)
    {
    for (j=1; j<a[i].name[0]; j++) fprintf(out, "%c", a[i].name[j]);
    fprintf(out, " %d %d %d\n", a[i].kids, a[i].time, a[i].total);
    }

for (i=0; i<lenb; i++)
    {
    for (j=1; j<b[i].name[0]; j++) fprintf(out, "%c", b[i].name[j]);
    fprintf(out, " %d %d\n", b[i].kids, b[i].time);
    }
*/


fclose(out);


return 0;
}

