만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

세포 폭발

시간 제한2초메모리 제한512 MB

요약
세포 분열 규칙과 목표 수열 S가 주어졌을 때, 웜의 세포 수열에 S가 연속으로 처음 나타나는 시점을 구합니다. 나타나지 않으면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
문자열 매칭, 동적 계획법, 그래프
정답자
아직 제출이 없습니다

문제

바이트세포충은 버려진 컴퓨터에 사는 원시적인 생물이다. 세포들이 순서대로 늘어선 열이며, 각 세포는 nn가지 종류 중 하나에 속한다. 종류는 설명을 쉽게 하려고 1부터 nn까지 번호로 부른다. 바이트세포충은 매우 빠르게 복제한다.

태어난 첫 분에는 종류 1인 세포 하나로 이루어져 있다. 매분 세포 복제가 일어나서, 각 세포는 적어도 두 개 이상의 세포 열로 나뉜다. 분열 결과 서로 다른 종류의 세포가 생길 수 있지만, 종류 kk인 세포는 항상 같은 열 H(k)=hk,1,hk,2,…,hk,lkH(k) = h_{k,1}, h_{k,2}, \ldots, h_{k,l_k}으로 나뉜다. ii분에 세포 열이 c1,c2,…,cpc_1, c_2, \ldots, c_p라면, (i+1)(i+1)분에는 H(c1),H(c2),…,H(cp)H(c_1), H(c_2), \ldots, H(c_p)를 차례로 이어 붙인 열이 된다.

세포 열 안에 정해진 열 SS가 연속한 구간으로 들어 있으면 바이트세포충은 성숙한다. SS는 정해진 종류의 세포가 차례로 놓인 열이다.

바이트 연구자들은 바이트세포충의 생애를 더 자세히 알고 싶어 한다. 특히 생애가 시작되어 성숙하기까지 걸리는 시간을 알고 싶어 한다.

입력

첫 줄에 두 정수 nn과 mm이 주어진다 (1≤n≤5001 \le n \le 500, 1≤m≤10001 \le m \le 1000). nn은 세포 종류의 개수이고, mm은 성숙 조건이 되는 열 SS의 길이이다.

다음 nn개의 줄은 세포 분열을 나타낸다. ii번째 줄은 정수 lil_i (li≥2l_i \ge 2)로 시작하고, 이어서 H(i)H(i)를 이루는 정수 hi,1,hi,2,…,hi,lih_{i,1}, h_{i,2}, \ldots, h_{i,l_i} (1≤hi,j≤n1 \le h_{i,j} \le n)가 나온다. 모든 lil_i의 합은 1000을 넘지 않는다.

마지막 줄에는 SS를 이루는 세포 종류 mm개가 1부터 nn 사이의 정수로 주어진다.

출력

바이트세포충이 처음으로 성숙하는 분의 번호를 출력한다. 끝내 성숙하지 않으면 −1-1을 출력한다.

힌트

두 번째 분에 바이트세포충은 H(1)=2,3H(1) = 2, 3이다. 세 번째 분에는 H(2),H(3)=1,3,3,1,2H(2), H(3) = 1, 3, 3, 1, 2가 되며, 여기에 S=3,1S = 3, 1이 들어 있으므로 성숙한다.

예제1

  1. 예제 1

    입력
    3 2
    2 2 3
    3 1 3 3
    2 1 2
    3 1
    
    예상 출력
    3