주차장 정리

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

만리장성 옆 주차장에는 주차 칸이 한 줄로 길게 늘어서 있다. 줄의 한쪽 끝을 왼쪽, 다른 쪽 끝을 오른쪽이라고 하자. 모든 칸에 차가 한 대씩 서 있다. 차마다 정수로 나타내는 종류가 있고, 종류가 같은 차가 여러 대 있을 수도 있다.

작업자 $W$명이 차를 옮겨서 왼쪽 끝부터 오른쪽 끝까지 종류가 오름차순이 되도록 정리한다. 작업은 라운드 단위로 이루어진다. 한 라운드에서 각 작업자는 차 한 대를 칸 밖으로 몰고 나온 다음, 같은 라운드에 다른 차가 빠져나가 비게 된 칸에 그 차를 넣을 수 있다. 한 라운드를 쉬는 작업자가 있어도 된다.

작업자들은 자리를 옮기는 차가 가장 적기를 바란다. 처음 서 있던 칸과 마지막에 서 있는 칸이 다르면 그 차는 옮긴 차로 세고, 그 사이에 몇 번을 오갔는지는 세지 않는다. 종류가 같은 차끼리는 구별하지 않으므로, 어떤 차가 종류가 같은 다른 차의 처음 자리에 들어가도 된다.

줄에 선 차의 종류와 작업자 수가 주어질 때, 옮겨야 하는 차의 최소 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 세 개가 주어진다. 첫 번째는 차의 수 $N$이다. $2 \le N \le 20000$이다. 두 번째는 종류의 수 $M$이다. $2 \le M \le 50$이다. 차의 종류는 $1$부터 $M$까지의 정수이고, 각 종류의 차가 적어도 한 대씩 줄에 서 있다. 세 번째는 작업자의 수 $W$이다. $2 \le W \le M$이다. 둘째 줄에는 정수 $N$개가 주어지며, $i$번째 정수는 줄의 왼쪽 끝에서부터 센 $i$번째 차의 종류이다.

출력

왼쪽 끝부터 오른쪽 끝까지 종류가 오름차순이 되도록 정리할 때 옮겨야 하는 차의 최소 개수를 한 줄에 출력한다.