만드는 중입니다

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

카드 섞기

면접 대비

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

요약
카드 위치의 순열과 각 카드가 가야 할 플레이어가 주어질 때, 모든 카드가 목표 플레이어에게 도달하도록 하는 최소 셔플 횟수를 구하거나 불가능하면 -1을 출력한다.
난이도

보통10점 중 6점

유형
배열, 수학, 구현, 정수론
정답자
아직 제출이 없습니다

문제

카드가 N장 있고, 처음 위치는 0번부터 N-1번까지이다. 세 명의 플레이어 0, 1, 2에게 현재 위치 순서대로 카드를 나누면, 위치 j에 있는 카드는 플레이어 j mod 3에게 간다.

처음 i번 위치에 있던 카드는 최종적으로 플레이어 P[i]에게 가야 한다.

카드를 한 번 섞는 방법은 길이 N의 순열 S로 주어진다. 한 번 섞으면 현재 i번 위치에 있던 카드는 S[i]번 위치로 이동한다.

목표를 만족시키기 위해 필요한 섞기 횟수의 최솟값을 구하라.

입력

첫째 줄에 N이 주어진다. N은 3 이상 48 이하이며, 3의 배수이다.

둘째 줄에 길이 N의 수열 P가 주어진다. P의 각 원소는 0, 1, 2 중 하나이다.

셋째 줄에 길이 N의 수열 S가 주어진다. S의 각 원소는 0 이상 N-1 이하의 정수이며, 중복되지 않는다.

출력

목표를 만족시키기 위해 필요한 섞기 횟수의 최솟값을 출력한다. 아무리 섞어도 목표를 만족시킬 수 없다면 -1을 출력한다.

예제4

  1. 예제 1

    입력
    3
    2 0 1
    1 2 0
    
    예상 출력
    2
    
  2. 예제 2

    입력
    6
    0 1 2 0 1 2
    1 4 0 3 2 5
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3
    1 0 2
    0 2 1
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    12
    1 1 2 0 2 0 1 0 2 2 1 0
    5 0 9 7 1 8 3 10 4 11 6 2
    
    예상 출력
    59