// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("unroll-loops")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define endl '\n'
#define ll long long
#define mod 1000000007
#define all(x) x.begin(), x.end()
template <typename T>
using super_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define O_O() ({ \
ios_base::sync_with_stdio(false); \
cin.tie(NULL); \
})
// int dx[]= {-1, 1, 0, 0, -1,-1, 1, 1};
// int dy[]= { 0, 0,-1, 1, -1, 1,-1, 1};
const int N = 2e5 + 9;
int n, k, arr[N], fq[N], distinct;
void solve()
{
cin >> n >> k;
for(int i = 1; i <= n; i++) {
cin >> arr[i];
}
ll ans = 0, i = 1, j = 1;
while(j <= n) {
fq[arr[j]]++;
if (fq[arr[j]] == 1) {
distinct++;
}
if(distinct > k) {
while(distinct > k) {
fq[arr[i]]--;
if(!fq[arr[i]]) distinct--;
i++;
}
}
if (distinct == k)
{
ans += fq[arr[i]];
}
j++;
}
cout << ans << endl;
}
int main()
{
// freopen("input.txt","r",stdin);
O_O();
int test = 1;
// cin >> test;
for (int tc = 1; tc <= test; tc++)
{
solve();
}
return 0;
}
Ly8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCi8vICNwcmFnbWEgR0NDIHRhcmdldCgic3NlLHNzZTIsc3NlMyxzc3NlMyxzc2U0LHBvcGNudCxhYm0sbW14LGF2eCx0dW5lPW5hdGl2ZSIpCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp1c2luZyBzdXBlcl9zZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CiNkZWZpbmUgT19PKCkgKHsgICAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IFwKICAgIGNpbi50aWUoTlVMTCk7ICAgICAgICAgICAgICAgICAgICBcCn0pCi8vIGludCBkeFtdPSB7LTEsIDEsIDAsIDAsIC0xLC0xLCAxLCAxfTsKLy8gaW50IGR5W109IHsgMCwgMCwtMSwgMSwgLTEsIDEsLTEsIDF9OwoKY29uc3QgaW50IE4gPSAyZTUgKyA5OwppbnQgbiwgaywgYXJyW05dLCBmcVtOXSwgZGlzdGluY3Q7Cgp2b2lkIHNvbHZlKCkKewogICAgY2luID4+IG4gPj4gazsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFycltpXTsKICAgIH0KICAgIGxsIGFucyA9IDAsIGkgPSAxLCBqID0gMTsKICAgIHdoaWxlKGogPD0gbikgewoKICAgICAgICBmcVthcnJbal1dKys7CiAgICAgICAgaWYgKGZxW2FycltqXV0gPT0gMSkgewogICAgICAgICAgICBkaXN0aW5jdCsrOwogICAgICAgIH0KICAgICAgICBpZihkaXN0aW5jdCA+IGspIHsKICAgICAgICAgICAgd2hpbGUoZGlzdGluY3QgPiBrKSB7CiAgICAgICAgICAgICAgICBmcVthcnJbaV1dLS07CiAgICAgICAgICAgICAgICBpZighZnFbYXJyW2ldXSkgZGlzdGluY3QtLTsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgIAogICAgICAgIGlmIChkaXN0aW5jdCA9PSBrKQogICAgICAgIHsKICAgICAgICAgICAgYW5zICs9IGZxW2FycltpXV07CiAgICAgICAgfQogICAgICAgIGorKzsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0KCmludCBtYWluKCkKewogICAgLy8gZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgT19PKCk7CiAgICBpbnQgdGVzdCA9IDE7CiAgICAvLyBjaW4gPj4gdGVzdDsKICAgIGZvciAoaW50IHRjID0gMTsgdGMgPD0gdGVzdDsgdGMrKykKICAgIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==