회전과 재작성

아직 제출이 없습니다시간 제한15초메모리 제한128 MB

문제

정수 수열 두 개와 재작성 규칙 여러 개가 주어진다. 수열 A는 A1,A2,,AnA_1, A_2, \ldots, A_n이고 수열 B는 B1,B2,,BmB_1, B_2, \ldots, B_m이며, 각 규칙은 x1,x2,,xkyx_1, x_2, \ldots, x_k \to y 꼴이다. 두 수열에는 아래 두 변환을 원하는 순서로 원하는 횟수만큼 적용할 수 있고, 두 수열은 서로 독립적으로 변환한다.

  • 회전: 수열의 첫 원소를 맨 뒤로 옮긴다. 즉 c1,c2,,cpc_1, c_2, \ldots, c_pc2,,cp,c1c_2, \ldots, c_p, c_1로 바꾼다.
  • 재작성: 규칙 x1,x2,,xkyx_1, x_2, \ldots, x_k \to y를 써서 c1,c2,,ci,x1,x2,,xk,d1,d2,,djc_1, c_2, \ldots, c_i, x_1, x_2, \ldots, x_k, d_1, d_2, \ldots, d_jc1,c2,,ci,y,d1,d2,,djc_1, c_2, \ldots, c_i, y, d_1, d_2, \ldots, d_j로 바꾼다.

A와 B를 같은 수열로 만들 수 있는지 판정하고, 만들 수 있다면 그렇게 만든 수열의 길이 중 가장 큰 값을 구하라.

입력

입력은 여러 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.

n m r
A1 A2 ... An
B1 B2 ... Bm
R1
...
Rr

첫 줄에는 양의 정수 nn, mm, rr가 주어진다. nn은 수열 A의 길이(n25n \le 25), mm은 수열 B의 길이(m25m \le 25), rr는 재작성 규칙의 개수(r60r \le 60)다. 둘째 줄에는 A의 원소 nn개가, 셋째 줄에는 B의 원소 mm개가 주어진다. 이어지는 rr개 줄은 각각 규칙 하나를 다음 형식으로 나타낸다.

k x1 x2 ... xk y

맨 앞의 kk는 규칙 좌변의 길이이고 2k102 \le k \le 10이다. 그 뒤에 좌변을 이루는 정수 kkx1,x2,,xkx_1, x_2, \ldots, x_k가 오고, 마지막에 우변을 나타내는 정수 yy가 온다.

A1,,AnA_1, \ldots, A_n, B1,,BmB_1, \ldots, B_m, x1,,xkx_1, \ldots, x_k, yy는 모두 1 이상 30 이하다.

0 0 0인 줄이 입력의 끝을 나타낸다.

출력

각 데이터 집합마다 한 줄씩 출력한다. A와 B를 같은 수열로 만들 수 있으면 그렇게 만들 수 있는 수열의 최대 길이를 출력하고, 만들 수 없으면 -1을 출력한다.