#include <bits/stdc++.h>

#define fi first
#define se second

const int N = 200200;
const long long m1 = 999998727899999ll;
const long long m2 = 777737777777777ll;
const long long p1 = 1e9 + 7;
const long long p2 = 1e9 + 9;

using namespace std;

struct fenwick
{
        long long mod;
        long long t[N];

        void upd(int x, long long y)
        {
                y %= mod;
                while(x < N){
                        t[x] += y;
                        if(t[x] < 0){
                                t[x] += mod;
                        } else if(t[x] >= mod){
                                t[x] -= mod;
                        }
                        x += x & -x;
                }
        }
        long long get(int x)
        {
                long long res = 0;
                while(x > 0){
                        res += t[x];
                        if(res >= mod){
                                res -= mod;
                        }
                        x -= x & -x;
                }
                return res;
        }
};

fenwick t1, t2;
fenwick C;

int n;
int k;
int a[N];
long long f1[N];
long long f2[N];

long long safe_mul(long long x, long long y, long long mod)
{
        x %= mod;

        long long res = 0;
        while(y){
                if(y & 1){
                        res += x;
                        if(res >= mod){
                                res -= mod;
                        }
                }
                y /= 2;
                x += x;
                if(x >= mod){
                        x -= mod;
                }
        }
        return res;
}

void add(long long &x, long long y, const long long &mod)
{
        x += y;
        if(x < 0){
                x += mod;
        } else if(x >= mod){
                x -= mod;
        }
}

int main()
{
        //freopen("input.txt", "r", stdin);
        //freopen("output.txt", "w", stdout);
        ios_base::sync_with_stdio(0);

        t1.mod = m1;
        t2.mod = m2;
        C.mod = N;

        cin >> n >> k;
        f1[0] = f2[0] = 1;
        for(int i = 1; i <= n; i++){
                cin >> a[i];
                a[i] += 1;

                f1[i] = safe_mul(f1[i - 1], p1, m1);
                f2[i] = safe_mul(f2[i - 1], p2, m2);
        }
        set < pair < long long, long long > > res;

        long long A = 0, B = 0;
        for(int i = 1; i < k; i++){
                t1.upd(a[i], f1[i]);
                t2.upd(a[i], f2[i]);
                C.upd(a[i], 1);

                add(A, t1.get(n), m1);
                add(A, - t1.get(a[i]), m1);
                add(B, t2.get(n), m2);
                add(B, - t2.get(a[i]), m2);
        }
        for(int i = k; i <= n; i++){
                t1.upd(a[i], f1[i]);
                t2.upd(a[i], f2[i]);
                C.upd(a[i], 1);

                add(A, t1.get(n), m1);
                add(A, - t1.get(a[i]), m1);
                add(B, t2.get(n), m2);
                add(B, - t2.get(a[i]), m2);

                //cout << A << " " << B << endl;
                res.insert({A, B});

                long long col = C.get(a[i - k + 1] - 1);
                t1.upd(a[i - k + 1], - f1[i - k + 1]);
                t2.upd(a[i - k + 1], - f2[i - k + 1]);
                C.upd(a[i - k + 1], - 1);

                add(A, - safe_mul(col, f1[i - k + 1], m1), m1);
                add(B, - safe_mul(col, f2[i - k + 1], m2), m2);
        }

        cout << res.size() << "\n";
}


Measured memory_bytes: 21376