#include <cstdio>
#include <algorithm>

using namespace std;

#define maxv 1000010
#define maxn 800010

int n, l, i, j, k, sol, x, nr, mx;
int aib[maxv], v[maxn];
char buf[maxn*8], *p;

inline int lsb(int x)
{
    return (x&(x-1))^x;
}

void update(int poz, int val)
{
    while(poz<=mx)
    {
        aib[poz]+=val;
        poz+=lsb(poz);
    }
}

int query(int poz)
{
    int sol=0;
    while(poz)
    {
        sol+=aib[poz];
        poz-=lsb(poz);
    }
    return sol;
}

int main()
{
    freopen("echilibru.in", "r", stdin);
    freopen("echilibru.out", "w", stdout);

    scanf("%d%d\n", &n, &l);
    fgets(buf, maxn*8, stdin);
    p=buf;
    for(int i=1; i<=n; ++i)
    {
      //  scanf("%d", &v[i]);
        x=1;
        nr=0;
        while((*p)==' ')
            ++p;

        while(((*p)>='0' && (*p)<='9') || (*p)=='-')
        {
            if((*p)=='-')
                x=-1;
            else
                nr=nr*10+(*p)-'0';
            ++p;
        }
        v[i]=nr*x;
        v[i]+=500001;
        mx=max(mx, v[i]);
    }

    for(int i=1; i<=2*l; ++i)
        update(v[i], 1);

    for(int i=2*l+1; i<=n; ++i)
    {
        if(i>2*l+1)
            update(v[i-2*l-1], -1);
        update(v[i], 1);

        if(query(v[i-l]-1)==l)
            ++sol;
    }

    printf("%d\n", sol);
    return 0;
}
