만드는 중입니다

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

워크 스와핑

시간 제한1초메모리 제한2048 MB

요약
사이클에서 초기 동전 배치를 목표 배치로 바꾸는 최소 walk swapping 횟수를 구하고, 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
배열, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

정점이 nn개인 사이클 CC는 i=1,…,n−1i = 1, \dots, n - 1에 대해 정점 ii와 i+1i + 1을 간선으로 잇고, 정점 nn과 11도 간선으로 잇는 그래프이다. CC의 정점에는 1부터 nn까지 번호가 붙어 있다.

코인은 nn개이며, 각 코인에는 {1,2,…,n}\{1, 2, \dots, n\} 중 하나의 번호가 적혀 있다. 같은 번호의 코인이 여러 개 있을 수 있다. 처음에 CC의 각 정점에는 코인이 하나씩 놓여 있다. 두 정점은 서로 코인을 교환할 수 있다.

CC의 walk w=(v1,v2,…,vk)w = (v_1, v_2, \dots, v_k)에 대해, walk swapping은 i=1,2,…,k−1i = 1, 2, \dots, k - 1의 순서로 viv_i와 vi+1v_{i+1}에 놓인 코인을 서로 바꾸는 것이다. walk는 연속한 두 정점이 서로 다르고 CC에서 인접한 정점들의 수열이다. CC를 따라 이동할 때 방문하는 정점들로 생각할 수 있다. kk를 walk의 길이라 한다. 길이가 k≥2k \geq 2인 walk에서는 k−1k - 1번의 교환이 일어나고, 길이가 1인 walk에서는 교환이 일어나지 않는다.

아래 그림은 정점 4개인 사이클에서 walk (2,1,4,1)(2, 1, 4, 1)에 대한 walk swapping의 진행 과정을 보여 준다.

예를 들어 그림의 walk (2,1,4,1)(2, 1, 4, 1)은 교환을 3번 일으킨다. 같은 최종 배치는 walk (1,2)(1, 2)로 교환 1번만에도 만들 수 있다.

초기 배치와 최종 배치가 주어진다. 초기 배치를 최종 배치로 바꾸는 walk swapping 중에서 전체 교환 횟수가 최소인 것을 구하라.

입력

첫째 줄에 CC의 정점 수 nn (1≤n≤3 0001 \leq n \leq 3\,000)이 주어진다.

둘째 줄에는 nn개의 정수가 주어진다. 각 정수는 1 이상 nn 이하이며 중복될 수 있다. ii번째 정수는 초기 배치에서 정점 ii에 놓인 코인의 번호이다.

셋째 줄에는 같은 형식으로 nn개의 정수가 주어진다. ii번째 정수는 최종 배치에서 정점 ii에 놓여야 하는 코인의 번호이다.

출력

초기 배치를 최종 배치로 바꾸는 walk swapping의 교환 횟수 최솟값을 한 줄에 출력한다. 그러한 walk swapping이 없으면 -1을 출력한다.

예제3

  1. 예제 1

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

    입력
    6
    2 1 1 2 2 1
    1 2 2 2 1 1
    
    예상 출력
    7
    
  3. 예제 3

    입력
    6
    4 1 3 6 2 5
    6 2 1 3 4 5
    
    예상 출력
    -1