시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
한 변의 길이가 N인 정사각형 보드가 있다. 보드는 한 변의 길이가 1인 정사각형 칸 N * N개로 나뉘어 있다. 또, 한 변의 길이가 1인 정육면체 블록 M개가 보드 위에 놓여 있다. 한 칸에는 블록이 여러 개 쌓여 있을 수 있다.
블록을 정리한 뒤에는 블록들이 직사각형 모양을 이루어야 한다. 직사각형 안의 모든 칸에는 블록이 정확히 하나씩 있어야 하며, 어떤 블록 위에도 다른 블록이 올라가 있으면 안 된다.
한 번의 이동으로는 어떤 칸의 가장 위에 있는 블록 하나를 들어 다른 칸의 가장 위에 올려놓을 수 있다. 현재 블록들의 위치가 주어질 때, 블록들이 하나의 직사각형을 이루게 만들기 위해 필요한 최소 이동 횟수를 구하시오.
첫째 줄에 보드의 한 변의 길이 N과 블록의 개수 M이 주어진다. (1 <= N <= 100, 1 <= M <= N^2)
다음 M개 줄에는 각 블록이 놓인 칸의 좌표 R, C가 주어진다. (1 <= R, C <= N)
블록을 최소 몇 개 이동해야 직사각형을 만들 수 있는지 출력한다. 입력은 항상 직사각형을 만들 수 있는 경우만 주어진다.