시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
데이브의 네 살배기 아들 매버릭은 카드 게임을 좋아하지만, 나이가 어려 형들과 놀 때마다 지고 만다. 손에 든 카드를 정리하는 것조차 그에게는 만만치 않은 일이다.
매버릭은 카드를 받으면 같은 색깔의 카드끼리 한 묶음이 되도록 정리해야 한다. 그다음, 각 묶음 안에서는 카드를 값의 오름차순으로 정렬해야 한다. 즉, 값이 가장 작은 카드가 그 묶음의 가장 왼쪽에 와야 한다. 색깔 묶음들이 놓이는 순서는 자유롭게 정할 수 있다. 물론 정리하는 동안에도 모든 카드는 계속 손에 들고 있어야 한다.
매버릭은 되도록 적은 이동으로, 즉 최소한의 동작으로 카드를 정리하려고 한다. 한 번의 이동이란 카드 하나의 위치를 바꾸는 것을 뜻한다.
카드를 정리하는 데 필요한 최소 이동 횟수를 구하는 프로그램을 작성하시오.
첫째 줄에 색깔의 수 C (1 ≤ C ≤ 4)와 한 색깔당 카드의 수 N (1 ≤ N ≤ 100)이 공백으로 구분되어 주어진다.
이어지는 C×N개의 줄에는 각각 두 정수 X와 Y (1 ≤ X ≤ C, 1 ≤ Y ≤ N)가 공백으로 구분되어 주어진다. 이는 매버릭에게 나누어진 카드의 색깔 X와 값 Y를 나타낸다. 줄이 주어지는 순서는 카드가 매버릭에게 나누어진 순서와 같다.
어떤 두 줄도 같은 카드를 나타내지 않는다.
첫째 줄에 위에서 설명한 대로 카드를 정리하는 데 필요한 최소 이동 횟수를 출력한다.