만드는 중입니다

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

두 체스판

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

요약
두 N×N 체스판에 각각 N개의 룩이 놓여 있을 때, 두 판 사이에서 룩을 맞바꿔 어느 판에서도 룩끼리 공격하지 못하게 만드는 최소 교환 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
그래프, 그리디
정답자
아직 제출이 없습니다

문제

N×NN \times N 크기의 체스판 두 개에 룩이 각각 NN개씩 올라가 있다. 룩은 같은 체스판의 같은 열이나 같은 행에 있는 다른 룩을 공격할 수 있다.

두 체스판의 룩을 적절히 교환하여 두 체스판 위의 어떠한 룩도 다른 룩을 공격하지 못하게 만들려고 한다.

룩을 교환하는 방법은 다음과 같다. 체스판의 rr행 cc열을 (r,c)(r, c)로 나타낼 때, 11번 체스판의 (a,b)(a,b)에 있는 룩과 22번 체스판의 (c,d)(c,d)에 있는 룩을 교환하면 11번 체스판의 (c,d)(c,d)와 22번 체스판의 (a,b)(a,b)에 각각 룩이 생기고, 기존 위치에 있던 두 룩은 사라진다.

체스판의 한 칸에는 룩이 최대 한 개만 올라갈 수 있다. 따라서 룩이 생길 위치에 이미 다른 룩이 있다면 그 룩은 교환할 수 없다. 예를 들어, 11번 체스판의 (a,b)(a,b)에 룩이 있다면 22번 체스판의 (a,b)(a,b)에 있는 룩은 11번 체스판의 (a,b)(a,b)에 있는 룩을 제외한 11번 체스판 위의 모든 룩과 교환할 수 없다.

최소 몇 번의 교환으로 두 체스판 위의 어떠한 룩도 다른 룩을 공격하지 못하게 만들 수 있을까?

입력

첫 번째 줄에 정수 NN이 주어진다. (1≤N≤100 0001\leq N\leq 100\ 000)

다음 NN개의 줄에 11번 체스판 위의 각 룩이 있는 행의 번호 xix_i와 열의 번호 yiy_i가 공백으로 구분되어 주어진다. (1≤xi,yi≤N1\leq x_i,y_i\leq N)

다음 NN개의 줄에 22번 체스판 위의 각 룩이 있는 행의 번호 xix_i와 열의 번호 yiy_i가 공백으로 구분되어 주어진다. (1≤xi,yi≤N1\leq x_i,y_i\leq N)

같은 체스판에서는 같은 좌표가 두 번 주어지지 않는다.

출력

두 체스판 위의 어떠한 룩도 다른 룩을 공격할 수 없는 상태를 만들기 위한 최소한의 교환 횟수를 출력한다.

룩을 어떻게 교환하더라도 두 체스판 위의 어떠한 룩도 다른 룩을 공격할 수 없는 상태를 만들 수 없다면 대신 −1-1을 출력한다.

예제2

  1. 예제 1

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

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