#include<bits/stdc++.h>
using namespace std;
const int N=2003;
char a[N][N];
int p[N][N];
void add(int b1,int b2,int e1,int e2)
{
++p[b1][e1];++p[b2+1][e2+1];
--p[b1][e2+1];--p[b2+1][e1];
}
int main()
{
int n,k,i,j,b,e;
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
scanf("%s",a[i]);
for(i=0;i<n;i++){ //每行
b=e=-1; //最左最右端点
for(j=0;j<n;j++)
if(a[i][j]=='B'){
if(b<0) b=j; e=j;
}
if(b<0) add(0,n-1,0,n-1); //全部都有贡献
else if(e-b+1<=k) add(max(0,i-k+1),i,max(0,e-k+1),b); //行的限制[max(0,i-k+1),i]
}
for(i=0;i<n;i++){ //每列
b=e=-1;
for(j=0;j<n;j++)
if(a[j][i]=='B'){
if(b<0) b=j; e=j;
}
if(b<0) add(0,n-1,0,n-1);
else if(e-b+1<=k) add(max(0,e-k+1),b,max(0,i-k+1),i);
}
for(i=0;i<n;i++)
for(j=1;j<n;j++)
p[i][j]+=p[i][j-1];
for(i=1;i<n;i++)
for(j=0;j<n;j++)
p[i][j]+=p[i-1][j];
int ans=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
ans=max(ans,p[i][j]);
printf("%d\n",ans);
return 0;
}