만드는 중입니다

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

오란자다

면접 대비

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

요약
한 줄로 놓인 n개의 병에서 인접한 병끼리 맞바꾸는 횟수를 최소로 하여 맨 앞 k개의 브랜드가 모두 다르게 만드는 값을 구하고, 불가능하면 -1을 구합니다.
난이도

보통10점 중 5점

유형
그리디, 해시맵, 정렬
정답자
아직 제출이 없습니다

문제

바이타바시는 집에 있는 것을 좋아한다. 지금은 팬데믹 한가운데라서 사회적 거리를 지켜야 한다. 저녁에 컴퓨터 앞에서 보내는 시간에는 Byte Defence 3를 하고 옛 알고리즘 대회 문제를 푸는 것 외에, 오란자다를 마시는 것이 가장 좋아하는 일이다.

바이타바시의 지하실에는 긴 선반이 있고, 그 위에 오란자다 병 nn개가 일렬로 놓여 있다. 각 병에는 상표가 있고, 상표는 정수로 표시된다. 지하실은 좁고 바닥이 미끄러워서 병을 손에 들고 오가는 것은 위험하다. 병이 깨질 수 있다. 바이타바시가 할 수 있는 일은 인접한 두 병의 위치를 서로 바꾸는 것뿐이다. 한 번 바꾸는 데 1초가 걸린다. 선반을 따라 이동하는 데는 시간이 들지 않는다.

오늘 저녁 바이타바시는 바이톨리나를 초대해 오란자다를 함께 맛보려 한다. 자리를 빛내기 위해 선반의 가장 왼쪽 kk개 병이 모두 서로 다른 상표이기를 원한다.

바이타바시는 집 전체를 치워야 해서 시간이 많지 않다. 선반을 최대한 빨리 재배열하고 싶어 한다. 이 문제를 풀어 달라.

입력

첫 줄에 정수 nn과 kk가 주어진다 (1≤n≤5⋅1051 \le n \le 5 \cdot 10^5, 1≤k≤n1 \le k \le n). 각각 선반에 놓인 병의 개수와, 서로 다른 상표여야 하는 가장 왼쪽 병의 개수이다.

둘째 줄에는 정수 nn개 a1,a2,a3,…,ana_1, a_2, a_3, \ldots, a_n (1≤ai≤n1 \le a_i \le n)이 주어진다. aia_i는 왼쪽에서 ii번째 병의 상표이다.

출력

처음 kk개 병이 모두 서로 다른 상표가 되는 최소 초 수를 정수 하나로 출력한다. 그런 상태를 만들 수 없으면 −1-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초보다 적게 걸리는 방법은 없다.

두 번째 예제에서는 세 병이 모두 같은 상표이므로 처음 두 병을 서로 다른 상표로 만들 수 없다.

예제2

  1. 예제 1

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

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