#include <bits/stdc++.h>
using namespace std;
const int maxn = 500 + 5;
char s[maxn][maxn];
int n, k, cnt = 0;
int dx[4] = {0, 0, -1, 1}, dy[4] = {-1, 1, 0, 0};
int f[maxn][maxn], sum[maxn][maxn], addtime[maxn * maxn], size[maxn * maxn];
struct node {
  int x, y;
  node() {}
  node(int x, int y) : x(x), y(y) {}
};
void BFS(int a, int b) {
  queue<node> q;
  q.push(node(a, b));
  size[++cnt] = 1;
  f[a][b] = cnt;
  while (!q.empty()) {
    node t = q.front();
    q.pop();
    for (int i = 0; i < 4; i++) {
      int tx = t.x + dx[i], ty = t.y + dy[i];
      if (tx > 0 && tx <= n && ty > 0 && ty <= n && !f[tx][ty] &&
          s[tx][ty] == '.') {
        q.push(node(tx, ty));
        f[tx][ty] = cnt;
        size[cnt]++;
      }
    }
  }
}
int Count(int x, int y) {
  return sum[x + k - 1][y + k - 1] - sum[x + k - 1][y - 1] -
         sum[x - 1][y + k - 1] + sum[x - 1][y - 1];
}
void add(int x, int y, int &cur) {
  if (!f[x][y]) return;
  int p = f[x][y];
  if (!addtime[p]) cur += size[p];
  addtime[p]++;
}
void remove(int x, int y, int &cur) {
  if (!f[x][y]) return;
  int p = f[x][y];
  addtime[p]--;
  if (!addtime[p]) cur -= size[p];
}
int main() {
  int i, j, ans = 0, x, y;
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) scanf("%s", s[i] + 1);
  for (i = 1; i <= n; i++)
    for (j = 1; j <= n; j++) {
      if (!f[i][j] && s[i][j] == '.') BFS(i, j);
      sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
      if (s[i][j] == '.') sum[i][j]++;
    }
  for (i = 1; i + k <= n + 1; i++) {
    int cur = 0;
    memset(addtime, 0, sizeof(addtime));
    for (x = i - 1; x <= i + k; x++)
      for (y = 1; y <= k; y++) add(x, y, cur);
    for (y = i; y < i + k; y++) add(y, k + 1, cur);
    ans = max(ans, cur + k * k - Count(i, 1));
    for (y = 2; y + k - 1 <= n; y++) {
      for (x = i; x < i + k; x++) {
        remove(x, y - 2, cur);
        add(x, y + k, cur);
      }
      remove(i - 1, y - 1, cur);
      remove(i + k, y - 1, cur);
      add(i - 1, y + k - 1, cur);
      add(i + k, y + k - 1, cur);
      ans = max(ans, cur + k * k - Count(i, y));
    }
  }
  printf("%d\n", ans);
  return 0;
}
