컴퓨터공학과 새 건물에는 엘리베이터가 여러 대 있지만 계단은 없다. 제조사는 강의실과 사무실로 가기 쉽도록 각 엘리베이터가 미리 정해진 층에만 서게 설정했다. 어떤 엘리베이터는 홀수 층에만 서고, 어떤 엘리베이터는 짝수 층에만 선다. 여기서 끝이 아니다. 엘리베이터 안과 밖의 버튼도 그 엘리베이터가 서기로 정해진 층에 대해서만 작동한다. 이 설정으로 교수진은 목적지 층까지 더 빨리 가게 되었지만, 학생처럼 건물에 익숙하지 않은 사람은 크게 혼란스러워졌다.
사람 p가 i층에 있고 j층으로 가려고 한다. 이동 시간을 가장 짧게 하려면 p는 어느 엘리베이터를 타고, 어느 층에서 어느 엘리베이터로 갈아타야 하는가? p의 이동 경로를 i=f1→f2→⋯→fk=j라고 하면, 최소로 만들려는 이동 시간은 다음과 같다.
∑r=1k−1∣fr−fr+1∣
경로의 한 구간 fr→fr+1은 어떤 엘리베이터 한 대가 fr과 fr+1 모두에 설 때만 탈 수 있다. 이 엘리베이터를 쓰는 사람을 도와줄 프로그램을 작성하라.
입력에는 테스트 케이스가 여러 개 들어 있다. 각 테스트 케이스의 첫 줄에는 엘리베이터의 대수 n (1≤n≤10), 출발 층, 도착 층이 순서대로 주어진다. 이어지는 n개 줄 가운데 i번째 줄에는 i번째 엘리베이터가 설 수 있는 층의 개수 mi (2≤mi≤150)가 먼저 오고, 그 뒤에 층 번호 mi개가 온다. 층 번호는 모두 음이 아닌 정수이며 150보다 작다. 층 번호가 정렬되어 있다는 보장은 없다.
입력은 0 0 0만 있는 줄로 끝난다. 이 줄은 처리하지 않는다.
각 테스트 케이스마다 출발 층에서 도착 층까지 가는 데 필요한 최소 이동 시간을 한 줄에 출력한다. 출발 층에서 도착 층으로 가는 방법은 항상 존재한다.