성가신 용사들

시간 제한1초메모리 제한128 MB

문제

사악한 마법사가 왕좌의 방으로 들이닥쳤다. 용사 일행이 또 동굴에 쳐들어왔다. 하필 함정을 정비하느라 모두 꺼 둔 사이에 들어와서는 동굴 안에 진까지 쳤다. 함정은 이제 다시 작동한다. 마법사는 훈련된 오크를 어디로 보낼지 지금 당장 알아내라고 명령한다. 앞서 입을 연 하인의 최후를 본 당신은 동굴 지도를 챙겨 들고 계산에 들어간다.

지도에는 $1$번부터 $n$번까지 번호를 붙인 요충지가 $n$개 있다. 통로는 모두 요충지 두 곳을 잇고, 함정은 모두 요충지에 놓여 있으며, 막다른 곳도 모두 요충지다. 한 요충지에 이어진 통로는 많아야 세 개다. $1$번 요충지는 바깥으로 나가는 입구이고 통로가 정확히 하나 있다. 어느 요충지에서든 입구까지 가는 길은 하나뿐이다. 통로가 하나뿐인 요충지는 막다른 곳이며 $1$번 요충지만 예외다.

주인은 통로 한가운데에 마법 관문을 연다. 요충지에는 열지 못한다. 관문에서 나온 오크는 먼저 입구의 빛에서 멀어지는 쪽으로 걷는다. 그다음부터는 이렇게 움직인다.

  • 막다른 곳에서는 돌아선다.
  • 통로가 두 개인 요충지에서는 들어온 통로가 아닌 쪽으로 나간다.
  • 통로가 세 개인 요충지, 곧 갈림길에서는 왼쪽 통로를 고른다. 안으로 들어갈 때든 되돌아 나올 때든 갈림길에 설 때마다 똑같이 고른다.

왼쪽과 오른쪽은 걷고 있는 오크가 보는 방향을 기준으로 삼는다. 지도가 요충지마다 통로를 시계 방향으로 적어 둔 이유가 여기에 있다.

오크가 들어가기 전에 수 $t$를 하나 알려 줄 수 있다. 그러면 갈림길에 $t$번째로 섰을 때만 왼쪽 대신 오른쪽 통로로 간다. 오크는 돌아올 때까지 수를 하나만 기억하므로 한 번 들어가서 오른쪽으로 꺾는 일은 많아야 한 번이다. 같은 관문으로 오크를 여러 번 들여보낼 수 있고 그때마다 다른 수를 알려 줘도 된다. 관문은 필요한 만큼 열어 둘 수 있다.

함정이 놓인 요충지를 밟은 오크는 그대로 잃는다. 주인은 이를 용납하지 않는다. 오크는 반드시 관문으로 돌아와야 하므로 $t$도 거기에 맞춰 골라야 한다.

용사 일행은 막다른 곳에 진을 쳤다. 그래서 함정을 지나지 않고 입구까지 갈 수 있는 막다른 곳은 오크가 모두 뒤져야 한다. 어떤 막다른 곳에서 입구까지 가는 길 위의 요충지 가운데 함정이 놓인 곳이 하나도 없으면 그곳은 뒤져야 한다. 그 막다른 곳 자체도 길에 포함한다. 주인이 여는 관문은 될 수 있는 대로 적어야 한다.

입력

입력은 여러 데이터 집합으로 이루어진다. 각 집합의 첫 줄에는 정수 $n$과 $m$이 주어진다. $n$은 요충지 개수로 $2 \le n \le 50000$이고, $m$은 함정 개수로 $0 \le m \le 500$이다.

이어지는 $n$개 줄은 요충지를 설명한다. $i$번째 줄에는 $i$번 요충지에 이어진 통로 개수 $n_i$($1 \le n_i \le 3$)가 먼저 오고, 그 통로가 이어지는 요충지 번호 $n_i$개가 시계 방향으로 뒤따른다.

그다음 $m$개 줄에는 함정이 놓인 요충지 번호가 한 줄에 하나씩 주어진다.

$1$번 요충지는 입구이며 통로가 항상 정확히 하나다. 마지막 데이터 집합 다음에는 $0$ $0$만 있는 줄이 오고 이 줄은 처리하지 않는다.

출력

데이터 집합마다 필요한 관문의 최소 개수를 한 줄에 하나씩 출력한다.