#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define MAXN 1<<19
#define inf 1000000007
using namespace std;
int n,k;
int tt;
int w[MAXN];
char a[MAXN],b[MAXN];
int f[MAXN];
int seg[MAXN << 1];
void modify(int sit,int x)
{
	seg[sit+=MAXN]=x;
	for(sit >>= 1; sit ; sit>>=1)
	{
		seg[sit]=min(seg[sit<<1],seg[sit<<1|1]);
	}
}
int query(int l,int r)
{
	int mn=inf;
	for(l += MAXN,r+=(MAXN)+1;l<r;l>>=1,r>>=1)
	{
		if(l & 1) mn=min(mn,seg[l++]);
		if(r & 1) mn=min(mn,seg[--r]);
	}
	return mn;
}
int main()
{
	scanf("%d %d",&n,&k);
	scanf("%s",a+1);
	scanf("%s",b+1);
	int xx=1;
	while(xx*2<k){xx*=2;tt++;}
	for(int i=1;i<=n;i++)
	{
		f[i]=inf;
	}
	b[0]=-1;
	for(int i=1;i<=n;i++)
	{
		w[i]=w[i-1];
		if(b[i]!=b[i-1])
		{
			w[i]++;
		}
	}
	modify(0,0+0-1);
	for(int i=1;i<=n;i++)
	{
		if(a[i]==b[i]){f[i]=f[i-1];}
		else f[i]=(w[i]+query(max(0,i-k),i-1)+1)/2+1;
		modify(i,2*f[i]-w[i+1]);
	}
	printf("%d\n",f[n]);
	return 0;
}


