정수 수열 두 개와 재작성 규칙 여러 개가 주어진다. 수열 A는 A1,A2,…,An이고 수열 B는 B1,B2,…,Bm이며, 각 규칙은 x1,x2,…,xk→y 꼴이다. 두 수열에는 아래 두 변환을 원하는 순서로 원하는 횟수만큼 적용할 수 있고, 두 수열은 서로 독립적으로 변환한다.
A와 B를 같은 수열로 만들 수 있는지 판정하고, 만들 수 있다면 그렇게 만든 수열의 길이 중 가장 큰 값을 구하라.
입력은 여러 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.
n m r
A1 A2 ... An
B1 B2 ... Bm
R1
...
Rr
첫 줄에는 양의 정수 n, m, r가 주어진다. n은 수열 A의 길이(n≤25), m은 수열 B의 길이(m≤25), r는 재작성 규칙의 개수(r≤60)다. 둘째 줄에는 A의 원소 n개가, 셋째 줄에는 B의 원소 m개가 주어진다. 이어지는 r개 줄은 각각 규칙 하나를 다음 형식으로 나타낸다.
k x1 x2 ... xk y
맨 앞의 k는 규칙 좌변의 길이이고 2≤k≤10이다. 그 뒤에 좌변을 이루는 정수 k개 x1,x2,…,xk가 오고, 마지막에 우변을 나타내는 정수 y가 온다.
A1,…,An, B1,…,Bm, x1,…,xk, y는 모두 1 이상 30 이하다.
0 0 0인 줄이 입력의 끝을 나타낸다.
각 데이터 집합마다 한 줄씩 출력한다. A와 B를 같은 수열로 만들 수 있으면 그렇게 만들 수 있는 수열의 최대 길이를 출력하고, 만들 수 없으면 -1을 출력한다.