# 1501번. 영어 읽기
# 첫 문자와 제일 끝 문자가 일치하고, 그 사이의 문자들은
# 순서가 어떻게 뒤바뀌어 있더라도 읽는 데 지장이 없다고 한다.
defget_bit(s):iflen(s)<3:# 길이가 2면 자를 수 없다.
return-1else:s=list(s[1:-1])# 여기만 사용
s.sort()# 정렬 해주고
return''.join(s)# 다시 문자열로 합쳐줌
nList=[]foriinrange(int(input())):s=input()nList.append([s,s[0],s[-1],get_bit(s)])m=int(input())foriinrange(m):# 문장을 분리
sList=list(input().rstrip().split(' '))ans=1pList=[0foriinrange(len(sList))]index=0forsinsList:# 단어 하나씩 꺼내서
bit=get_bit(s)forninnList:# 알고 있는 단어와 비교
iflen(s)==len(n[0]):ifs[0]==n[1]ands[-1]==n[2]:ifbit==n[-1]:# 해석 가능하면
pList[index]+=1# 경우의 수 늘려줌
index+=1forpinpList:# 모든 경우의 수를 곱연산
ans*=pprint(ans)