문제
농부 John은 1...N으로 번호가 매겨진 N마리의 소를 위해 N개의 선물(1≤N≤18)(또한 1...N로 번호가 지정됨)을 준비합니다. 각 소에는 N개의 모든 선물의 순열인 위시리스트가 있으며 소는 순열에서 나중에 나타나는 선물보다 먼저 나타나는 선물을 선호합니다.
농부 John은 게을러서 그냥 소 i에게 선물 i를 할당합니다. 이제 소들은 스스로 모여서 선물을 재분배하기로 결정하여 재분배 후 각 소는 원래 받은 선물 또는 원래 받은 선물보다 더 좋아했던 선물로 끝납니다.
추가 제한 사항으로: 선물이 원래 소에게 할당된 경우 선물은 동일한 품종의 소에게만 재할당될 수 있습니다(각 소는 젖소(Holstein) 또는 황소(Guernsey)). 길이가 N인 Q(1≤Q≤min(105,2n)) 기호 문자열이 주어지면 각 문자열에 해당하는 재할당 방법 수를 계산합니다.
입력
입력의 첫 번째 줄에는 N이 입력됩니다.
다음 N 줄에는 각각 i번째 소의 위시리스트가 입력됩니다. 입력은 각 행이 1…N의 순열임을 보장합니다.
다음 줄에는 Q가 입력됩니다.
마지막 Q 줄에는 각각 문자 G와 H로만 구성된 길이가 N인 품종 문자열이 입력됩니다.. 동일한 품종 문자열은 두 번 이상 표시되지 않습니다.
출력
각 기호 문자열에 대해 해당 개수의 재할당 방법을 포함하는 행을 출력합니다.
예제1
입력
4
1 2 3 4
1 3 2 4
1 2 3 4
1 2 3 4
5
HHHH
HHGG
GHGH
HGGG
GHHG
출력
2
1
1
2
2
힌트
출처
USACO 2022 February Gold