시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 184 21 17 29.825%

문제

지민이는 카지노의 딜러이고, 지금 3명의 플레이어(0, 1, 2번)가 있다. 이 게임은 N개의 카드를 이용한다. (0~N-1번)

일단 지민이는 카드를 몇 번 섞은 다음에, 그것을 플레이어들에게 나누어 준다. 0번째 위치에 있던 카드가 플레이어 1에게 가고, 1번째 위치에 있던 카드는 플레이어 2에게 가고, 2번째 위치에 있던 카드는 플레이어 3에게 가고, 3번째 위치에 있던 카드는 플레이어 0에게 가고, 이런식으로 카드를 나누어 준다. 하지만, 지민이는 약간 사기를 치려고 한다.

지민이는 처음에 카드를 섞기 전에 카드의 순서를 알고 있다.

카드를 섞을 때는 주어진 방법을 이용해서만 섞을 수 있다. 카드의 개수와 같은 크기가 N인 배열이 주어진다. 이 배열을 S라고 하자.

카드를 한 번 섞을 때면, i위치에 있던 카드는 S[i]로 간다. 입력으로 각 카드가 어떤 플레이어에게 가야 하는지 주어진다. 이 때, 몇 번 섞어야 각 카드가 해당하는 플레이어에게 가는지 구하는 프로그램을 작성하시오.
 

입력

첫째 줄에 N이 주어진다. N은 3보다 크거나 같고, 48보다 작거나 같은 3의 배수이다. 둘째 줄에는 각 카드가 어떤 플레이어에게 가야 하는지 주어진다. 셋째줄에는 배열 S가 주어진다. 배열 S에 있는 수는 모두 N-1보다 작거나 같은 자연수이고 중복되지 않는다.

출력

첫재 줄에 몇 번 섞어야 하는지 출력한다. 만약, 섞어도 섞어도 카드를 해당하는 플레이어에게 줄 수 없다면, -1을 출력한다.

예제 입력

3
2 0 1
1 2 0

예제 출력

2

힌트

처음에 카드는 2 0 1이다. 한 번 섞고 난 후에는 1 2 0이 된다. 한 번 더 섞고 난 후에는 0 1 2가 된다.

출처