문제
다양한 크기의 컵
처음에 컵들이 쟁반에 거꾸로 쌓여있는데, 각 쟁반에 있는 컵은 가장 작은 컵이 아래에 있고, 그다음 두 번째로 작은 것, 그다음 세 번째로 작은 것 등..
예를 들어, 그림 1은

처음 쟁반의 상태가 주어지면, 모든 컵들을 이동하여 쟁반 A나 C에 쌓을 수 있다.
컵을 이동할 때는 다음의 세 가지 규칙을 따른다.
규칙 1. 쟁반의 컵은 가장 위에 있는 컵만 다른 쟁반의 가장 위에 있는 컵 위에 쌓을 수 있다.
규칙 2. 큰 컵 위에 작은 컵은 쌓을 수 없다.
규칙 3. A에서 C, C에서 A로는 직접 이동할 수 없다.
따라서 직접 이동 가능한 것은 A에서 B, B에서 A, B에서 C, C에서 B 중 하나이다.
당신이 할 일은
가능하다면 최소 이동 횟수를 출력하고, 그렇지 않으면 -1
을 출력한다.
입력
입력의 첫 번째 줄에는 컵의 개수
그 다음 줄부터 4번째 줄까지 쟁반 A, B, C의 현재 상태가 들어오는데, 각 줄의 첫 번째 값은 컵의 개수
출력
출력은 한 줄로 이루어지는데 -1
을 출력한다.
예제1
310
0
1 1
2 2 3
9
예제2
420
2 1 2
1 3
1 4
3
예제3
25
2 1 2
0
0
0
예제4
33
0
1 1
2 2 3
-1