만드는 중입니다

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

케이크

시간 제한10초메모리 제한1024 MB

요약
두 2×n 격자의 색 배치가 주어질 때, 2×2 부분을 180도 회전하는 연산으로 초기 배치를 목표 배치로 바꾸는 최소 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

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

문제

옛날 옛적에 바부시카 바이트미와(B번 문제의 예외 피로기로 알려진 인물)가 케이크를 구웠다. 그녀는 케이크를 2n2n개의 직사각형 조각으로 잘랐다. 조각은 두 줄에 각각 nn개씩 놓인다. 그리고 각 조각의 윗면에 색 아이싱을 발랐다. 완성된 케이크를 본 그녀는 색 배치가 너무 끔찍해서 깜짝 놀랐다.

바이트미와는 색 배치를 더 나은 것으로 바꾸기로 했다. 하지만 조각을 하나씩 옮기는 방법은 쓸 수 없다. 조각 하나를 빼내면 옆면이 깨지기 때문이다. 바부시카 바이트미와는 가장자리가 지저분하게 잘린 케이크를 손님에게 내놓지 않는다.

다행히 바이트미와에게는 정확히 네 조각을 담는 직사각형 주걱이 있다. 주걱에는 두 줄에 두 조각씩 놓인다. 그녀는 조심스럽게 네 조각을 꺼내고 주걱을 돌린 뒤 반대편에서 다시 넣는다. 이 연산은 2×22 \times 2 정사각형을 180180도 회전하는 것으로 정식화된다.

B번 문제에서 당신이 빠르고 효율적으로 도와준 일을 기억한 바부시카는 무엇을 해야 할지 정확히 알고 있었다. 그녀는 당신에게 최소 연산 횟수를 구해 달라고 부탁했다. 당신은 문제가 정의되지 않았다는 이유로 도울 수 없다고 답했다. 바이트미와는 이를 예상하고 있었다. 그녀는 화이트보드로 가서 특정한 좋은 배치 하나를 그리고, 초기 아이싱 배치를 이 배치로 바꾸는 최소 연산 횟수를 구해 달라고 했다.

할머니가 잘못 알고 있어서 원하는 배치를 만드는 것이 실제로는 불가능할 수도 있다. 그런 경우에도 바부시카에게 최대한 빨리 알려 주어야 한다.

입력

첫 줄에는 테스트 케이스의 개수 zz(1≤z≤100001 \leq z \leq 10000)가 주어진다. 각 테스트 케이스의 첫 줄에는 정수 nn(2≤n≤5000002 \leq n \leq 500000)이 주어진다. 다음 두 줄은 초기 아이싱 배치의 두 줄을 나타낸다. 각 줄에는 11 이상 10910^9 이하의 정수 nn개가 공백 한 칸으로 구분되어 주어진다. 각 정수는 해당 조각에 칠해진 색의 번호다. 같은 색이 여러 번 나올 수 있다. 그다음 두 줄은 최종 배치를 같은 형식으로 나타낸다. 모든 테스트 케이스의 nn 합은 2000000을 넘지 않는다.

출력

각 테스트 케이스마다 초기 배치를 최종 배치로 바꾸는 데 필요한 최소 연산 횟수를 한 줄에 출력한다. 원하는 배치를 만들 수 없다면 −1-1을 출력한다.

힌트

첫 번째 테스트 케이스의 초기 배치는 다음과 같다.

1 2 3 2
4 3 1 3

세 단계로 원하는 배치를 만들 수 있다.

  1. 가장 왼쪽 정사각형을 회전한다.
3 4 3 2
2 1 1 3
  1. 가장 오른쪽 정사각형을 회전한다.
3 4 3 1
2 1 2 3
  1. 가운데 정사각형을 회전한다.
3 2 1 1
2 3 4 3

두 번째 테스트 케이스에서는 원하는 배치를 만들 수 없다.

예제1

  1. 예제 1

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