#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll m,n;
cin>>n>>m;
ll arr[n+1]={0};
for(ll i=1;i<=n;i++) //将数组转换为只包含0和1
{
cin>>arr[i];
if(arr[i]&1)
arr[i]=1;
else
arr[i]=0;
}
ll dp[n+1]={0},sum[n+1]={0}; //由于只有010101和101010两种结果,所以用这两种结果创
for(ll i=1;i<=n;i++) //两个前准缀和数组来统计两种结果的修改次数
{
sum[i]+=sum[i-1];
if(i&1&&arr[i]==0)
{
sum[i]++;
}
else if(i%2==0&&arr[i]==1)
{
sum[i]++;
}
}
for(ll i=1;i<=n;i++)
{
dp[i]+=dp[i-1];
if(i%2==1&&arr[i]==1)
{
dp[i]++;
}
else if(i%2==0&&arr[i]==0)
{
dp[i]++;
}
}
ll res=9999999999; //遍历所有的M子区间,统计更新最小值
for(ll i=1;i<=n-m+1;i++)
{
ll a=sum[i+m-1]-sum[i-1];
ll b=dp[i+m-1]-dp[i-1];
res=min(min(a,b),res); //先计算两个前缀和数组最小再相继比较
}
cout<<res<<endl;
return 0;
}