
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
//import java.util.Scanner;

import java.util.Arrays;


//City map #1: 1 camera(s) found

public class Main {

   //private static Scanner sc = new Scanner(System.in);
   private static BufferedReader bfr;
   private static PrintStream bwr;
   static int pocetSpoju =1;
   static DfsMatice base;
   static int pocetSub;
   static String vystup = "";
   static int pocitadloMest=0;
   static int pocitadloKrizovatek=0;
   static String localVystup="";
   
   static void zpracovani(int pocetMest) throws IOException {
      pocitadloMest++;
       pocitadloKrizovatek=0;
      localVystup="";
         String vstup = new String();         
            for(int i = 0 ; i < pocetMest  ; i++){               
            vstup = vstup + bfr.readLine().trim()+" ";
            }
            //vstup = vstup + bfr.readLine().trim();
         //   System.out.println(vstup.trim());
            String [] poleVstupu = vstup.trim().split(" ");
            Arrays.sort(poleVstupu);
            base.vytvoreniUzlu(poleVstupu);
            pocetSpoju = Integer.valueOf(bfr.readLine().trim());
         //   System.out.println("pocetSpoju"+pocetSpoju);
            //bfr.readLine();
            for(int i = 0 ; i<pocetSpoju ; i++){
               base.vytvoreniSpojeMaticeObousmerna(bfr.readLine().trim());         
            }      
            base.vytvoreniOrigMtice();
         //   base.vypisMaticeorig();
         //base.vypisMatice();   
         base.prohledDoHloubky(0);      
         pocetSub =base.pocetSubGrafu;
         //System.out.println(pocetSub);
         base.prebileni();
         for(int i = 0 ; i<poleVstupu.length ; i++){
         vyhodnoceni(poleVstupu[i]);
         }
         vystup = vystup+"City map #"+pocitadloMest+": "+pocitadloKrizovatek+" camera(s) found"+"\n"+localVystup+"\n";
   }   
   static void vyhodnoceni(String vyhod) {
      base.odeberSpoj(vyhod);
      base.prohledDoHloubky(0);   
      //base.vypisMatice();      
      //base.vypisMaticeorig();
      ////System.out.println(base.pocetSubGrafu);
   //   System.out.println("base.pocetSubGrafu "+base.pocetSubGrafu+" "+"pocetSub "+pocetSub);
      if(base.pocetSubGrafu>(pocetSub+1)){
         localVystup = localVystup+vyhod+"\n";
         pocitadloKrizovatek++;
      }
      base.prebileni();
      base.origMatice();
   }
   public static void main(String[] args) throws NumberFormatException, IOException {
      bfr = new BufferedReader(new InputStreamReader(System.in));
      bwr = new PrintStream(System.out);
      bwr.print("line1\n");
      base = new DfsMatice();
      int pocet = 0;
      while(true){
         pocet = Integer.valueOf(bfr.readLine().trim());
         //System.out.println("pocet"+pocet);
         if(pocet!=0){
      zpracovani(pocet);      }
         else{
            break;         }      }
      
   //   System.out.print(vystup.trim());
      //System.out.print("\n"+vystup.trim());
      bwr.print("\n"+vystup.trim());
      }
}
 class Prvek {   
   public String nazev;
   public Hrana hrana;
   //Prvek top;
   public String color;
   public int vzdalenost;
   public int predchudce;
   public int objeven;
   public int dokoncen;   
   Prvek(String nazev) {
      this.nazev = nazev;
      this.hrana = null;
      this.color = "White";
      this.vzdalenost = Integer.MAX_VALUE;
      this.predchudce = -1;
      this.objeven = Integer.MAX_VALUE;
      this.dokoncen = Integer.MAX_VALUE;
   }
      
}
class Hrana {
   public int vrchol;
   public Hrana dalsi;
      
   public Hrana (int vrchol) {       
      this.vrchol = vrchol;
      dalsi = null;
      } }




 class DfsMatice {
   private static String[] uzly;                  
   private static int matSousednosti [][];            //matice souslednosti
   private static int matSousednostiOrig [][];
   public Prvek [] prvky;                        //pole objektu
   public Prvek [] vystupni;      
//   private Prvek prac;
   private static int cas = 0;
   int pocetSubGrafu;
   
      
   DfsMatice() {
      this.prvky=null;
      this.pocetSubGrafu=1;
   }      
   void vytvoreniOrigMtice(){
      matSousednostiOrig = new int [uzly.length][uzly.length];
      for(int i = 0 ; i < prvky.length ; i++){
         for(int j = 0 ; j < prvky.length ; j++){            
         matSousednostiOrig[i][j]=matSousednosti[i][j];
         matSousednostiOrig[j][i]=matSousednosti[j][i];            
                  }         
   }
   }
   
   void vytvoreniUzlu(String[] pole){
   uzly = pole;   
   matSousednosti = new int [uzly.length][uzly.length];   
   prvky = new Prvek [pole.length];
   for(int i = 0 ; i < pole.length ; i++){
      prvky[i] = new Prvek(pole[i]);      }      
   Arrays.toString(pole);
   }      
   void vytvoreniSpojeMaticeObousmerna(String spoj) throws IOException {         //vytvari matici sousednosti
      //System.out.println("vytvoreniSpojeMaticeObousmerna: "+spoj);
      String [] casti = spoj.trim().split(" ");
      if(casti.length>2){
         throw new IOException();
      }
      for(int i = 0 ; i < prvky.length ; i++){
         for(int j = 0 ; j < prvky.length ; j++){
         if(prvky[i].nazev.equals(casti[0])&&prvky[j].nazev.equals(casti[1])){
         matSousednosti[i][j]=1;
         matSousednosti[j][i]=1;
         return;
      }            }      
   }   }
   
   void vypisMatice() {                              //vypise matici sousednosti
      System.out.println("");
      System.out.println("Vypis matici:");
      for(int i = 0 ; i < prvky.length ; i++){         
         for(int j = 0 ; j < prvky.length ; j++){         
         System.out.print(" "+matSousednosti[i][j]);               
         }
         System.out.println("");
      }            }

   void vypisMaticeorig() {                              //vypise matici sousednosti
      System.out.println("");
      System.out.println("Vypis matici orig:");
      for(int i = 0 ; i < prvky.length ; i++){         
         for(int j = 0 ; j < prvky.length ; j++){         
         System.out.print(" "+matSousednostiOrig[i][j]);               
         }
         System.out.println("");
      }            }
         
   int[] sousedi(int vstup){                              //slouzi pro for v ohodnoceni
   //   System.out.println("sousedi");
      int array [] = null;
      int pocitadlo = 0;
      //System.out.println(matSousednosti[vstup].length);
      for(int i = 0 ; i<matSousednosti[vstup].length ; i++){
         //System.out.println("for");
         //System.out.println(" "+matSousednosti[vstup][i]);
         if(matSousednosti[vstup][i]== 1){
            //System.out.println("true");
         pocitadlo++;
         }         }
         //System.out.println("pocitadlo "+pocitadlo);
         int j = 0;
         array = new int [pocitadlo];
      for(int k = 0 ; k<matSousednosti[vstup].length ; k++){
         if(matSousednosti[vstup][k]==1){
            array[j] = k;
            j++;
         }
      }   
   //   System.out.println("vstup: "+vstup+",  array "+Arrays.toString(array));
      return array;
   }
   
   void prohledDoHloubky (int s){
      pocetSubGrafu=1;      
      doHloubky(s);
      
      for(int i = 0 ; i < prvky.length ; i++){
         if(prvky[i].color == "White"){
            doHloubky(i);
            pocetSubGrafu++;
         }
      }
   }
   

   void doHloubky (int s) {                            //vytvori predchudce apod.
      int v;            
      prvky[s].color = "Gray";
      //prvky[s].vzdalenost = 0;
      cas++;      
      prvky[s].objeven = cas;
      int array [] = sousedi(s);
      for (int i = 0 ; i < array.length ; i++) {
         v = array[i];
      if (prvky[v].color == "White") {          
         prvky[v].predchudce = s;
         doHloubky(v);
      }          }
      prvky[s].color = "Black";
      prvky[s].dokoncen = cas = cas+1;
         
      }          
   void odeberSpoj(String spoj){
      int index=0;
      for(int i = 0 ; i< uzly.length ; i++){
         if(uzly[i].equals(spoj)){
            index = i;
            break;
         }
      }
      for(int i = 0 ; i < prvky.length ; i++){
         for(int j = 0 ; j < prvky.length ; j++){
         if(i==index || j==index){
         matSousednosti[i][j]=0;
         matSousednosti[j][i]=0;
      
      }            }      
   }      }
   void prebileni(){
      for(int i = 0 ; i < prvky.length ; i++){
         prvky[i].color = "White";
      }
   }
   void origMatice(){         
   
         for(int i = 0 ; i < prvky.length ; i++){
            for(int j = 0 ; j < prvky.length ; j++){               
            matSousednosti[i][j]=matSousednostiOrig[i][j];
            matSousednosti[j][i]=matSousednostiOrig[j][i];               
                     }         
      }
   }
}