1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>

void solve_dataset();

int main() {
    std::ios_base::sync_with_stdio(false);
    solve_dataset();
    return 0;
}

void solve_dataset() {
    long long bottle_count, desired_distinct_count;
    std::cin >> bottle_count >> desired_distinct_count;
    std::vector<bool> already_present(bottle_count + 1, false);
    long long next_position_to_fill = 0;
    long long seconds = 0;
    for(long long position = 0; position < bottle_count; position++) {
        long long brand;
        std::cin >> brand;
        if(already_present[brand])
            continue;
        seconds += position - next_position_to_fill;
        if(++next_position_to_fill >= desired_distinct_count)
            break;
        already_present[brand] = true;
    }
    const long long answer = next_position_to_fill < desired_distinct_count ? -1 : seconds;
    std::cout << answer << std::endl;
}