#include<iostream>
#include<string.h>
using namespace std;
const int maxn=1005;
int map[maxn][maxn],n,cnt[maxn][maxn];
char name[maxn][100];
int match_name(char str[])
{
   for(int i=1;i<n;i++)
       if(strcmp(str,name[i])==0)
           return i;
    strcpy(name[n],str);
    return n++;
}
void str_convert(char str[])
{
    int i,j,first_node,k;
    bool flag=0;
    char str1[100];
    for(i=0;i<strlen(str);)
    {
        for(j=0;str[i]!=' '&&str[i]!='\0';i++,j++)
            str1[j]=str[i];
        str1[j]='\0';
        i++;
        k=match_name(str1);
        if(flag==0)
        {
            first_node=k;
            flag=1;
        }
        else if(map[first_node][k]==0)
            {
              map[first_node][k]=map[k][first_node]=1;
              cnt[first_node][k]=cnt[k][first_node]=1;
            }
    }
}
void floyd() 
{
    int i,j,k;
    for(k=1;k<n;k++)
        for(i=1;i<n;i++)
            for(j=1;j<n;j++)
              if(map[i][k] && map[k][j])
                if(map[i][j]==0)
                {
                      map[i][j]=map[i][k]+map[k][j];
                      cnt[i][j]=cnt[i][k]*cnt[k][j];
                }
                else if(map[i][k]+map[k][j]<map[i][j])
                {
                    map[i][j]=map[i][k]+map[k][j];
                    cnt[i][j]=cnt[i][k]*cnt[k][j];
                }
                else if(map[i][k]+map[k][j]==map[i][j])
                    cnt[i][j] += cnt[i][k]*cnt[k][j];
}
int main()
{
    int i,j;
    char str[100],str1[100],str2[100];
    gets(str);
    while(gets(str))
    {
      n=1;
      memset(map,0,sizeof(map));
      memset(cnt,0,sizeof(cnt));
      str_convert(str);
      while(gets(str))
      {
        if(strcmp(str,"GRAPH END")==0) break;
        str_convert(str);
      }
      for(i=1;i<n;i++)
         map[i][i]=1;
      floyd();
       while(cin>>str1>>str2)
       {
        if(strcmp(str1,"GRAPH")==0 && strcmp(str2,"BEGIN")==0) break;
        i=match_name(str1);
        j=match_name(str2);
        cout<<str1<<" "<<str2<<" "<<cnt[i][j]<<endl;
       }
    }
    return 0;
}