오란자다
면접 대비시간 제한1초메모리 제한1024 MB
한 줄로 놓인 n개의 병에서 인접한 병끼리 맞바꾸는 횟수를 최소로 하여 맨 앞 k개의 브랜드가 모두 다르게 만드는 값을 구하고, 불가능하면 -1을 구합니다.
문제
바이타바시는 집에 있는 것을 좋아한다. 지금은 팬데믹 한가운데라서 사회적 거리를 지켜야 한다. 저녁에 컴퓨터 앞에서 보내는 시간에는 Byte Defence 3를 하고 옛 알고리즘 대회 문제를 푸는 것 외에, 오란자다를 마시는 것이 가장 좋아하는 일이다.
바이타바시의 지하실에는 긴 선반이 있고, 그 위에 오란자다 병 개가 일렬로 놓여 있다. 각 병에는 상표가 있고, 상표는 정수로 표시된다. 지하실은 좁고 바닥이 미끄러워서 병을 손에 들고 오가는 것은 위험하다. 병이 깨질 수 있다. 바이타바시가 할 수 있는 일은 인접한 두 병의 위치를 서로 바꾸는 것뿐이다. 한 번 바꾸는 데 1초가 걸린다. 선반을 따라 이동하는 데는 시간이 들지 않는다.
오늘 저녁 바이타바시는 바이톨리나를 초대해 오란자다를 함께 맛보려 한다. 자리를 빛내기 위해 선반의 가장 왼쪽 개 병이 모두 서로 다른 상표이기를 원한다.
바이타바시는 집 전체를 치워야 해서 시간이 많지 않다. 선반을 최대한 빨리 재배열하고 싶어 한다. 이 문제를 풀어 달라.
입력
첫 줄에 정수 과 가 주어진다 (, ). 각각 선반에 놓인 병의 개수와, 서로 다른 상표여야 하는 가장 왼쪽 병의 개수이다.
둘째 줄에는 정수 개 ()이 주어진다. 는 왼쪽에서 번째 병의 상표이다.
출력
처음 개 병이 모두 서로 다른 상표가 되는 최소 초 수를 정수 하나로 출력한다. 그런 상태를 만들 수 없으면 을 출력한다.
힌트
첫 번째 예제에서 가능한 교환 순서는 다음과 같다. 3, 3, 3, 1, 2 (초기 상태), 3, 3, 1, 3, 2 (3번과 4번 위치 교환), 3, 3, 1, 2, 3 (4번과 5번 위치 교환), 3, 1, 3, 2, 3 (2번과 3번 위치 교환), 3, 1, 2, 3, 3 (3번과 4번 위치 교환). 처음 세 병을 서로 다른 상표로 만드는 데 4초보다 적게 걸리는 방법은 없다.
두 번째 예제에서는 세 병이 모두 같은 상표이므로 처음 두 병을 서로 다른 상표로 만들 수 없다.