#include <bits/stdc++.h>
using namespace std;

const int MAXA = 1000000;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, K;
    cin >> N >> K;

    vector<int> a(N);
    vector<int> freq(MAXA + 1);

    for (int &x : a) {
        cin >> x;
        freq[x]++;
    }

    // Определяме K-те най-малки различни стойности.
    vector<bool> important(MAXA + 1, false);

    int found = 0;

    for (int x = 1; x <= MAXA && found < K; x++) {
        if (freq[x] > 0) {
            important[x] = true;
            found++;
        }
    }

    // Sliding window.
    vector<int> cnt(MAXA + 1);

    int have = 0;
    int R = 0;

    long long ans = 0;

    for (int L = 0; L < N; L++) {

        while (R < N && have < K) {
            int x = a[R];

            if (important[x]) {
                if (cnt[x] == 0)
                    have++;

                cnt[x]++;
            }

            R++;
        }

        if (have == K) {
            // [L, R-1] е най-късият валиден подмасив
            // с лява граница L.
            //
            // Следователно всички десни граници:
            // R-1, R, ..., N-1
            // също са валидни.
            ans += N - R + 1;
        }

        // Премахваме A[L] от прозореца.
        int x = a[L];

        if (important[x]) {
            cnt[x]--;

            if (cnt[x] == 0)
                have--;
        }
    }

    cout << ans << '\n';
}
