카드 섞기

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

보통6배열수학구현정수론면접 대비아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

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

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

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

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

입력

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

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

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

출력

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