#include <bits/stdc++.h>
using namespace std;
const int N = 505;
const int dr[4] = {0, 0, -1, 1};
const int dc[4] = {-1, 1, 0, 0};
int n, K, mien, ans, res, t;
int sz[N * N], vis[N * N], c[N][N];
char a[N][N];
bool ok(int x, int y) {
  return x >= 1 && x <= n && y >= 1 && y <= n && a[x][y] == '.';
}
void dfs(int x, int y) {
  if (c[x][y]) return;
  c[x][y] = mien;
  sz[mien]++;
  for (int i = 0; i < 4; i++)
    if (ok(x + dr[i], y + dc[i])) dfs(x + dr[i], y + dc[i]);
}
void add(int x, int y) {
  if (ok(x, y) && vis[c[x][y]] != t) res += sz[c[x][y]], vis[c[x][y]] = t;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> K;
  for (int i = 1; i <= n; i++) cin >> a[i] + 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (a[i][j] == '.' && !c[i][j]) mien++, dfs(i, j);
  for (int x = 1; x + K - 1 <= n; x++) {
    for (int i = 0; i < K; i++)
      for (int j = 0; j < K; j++) sz[c[x + i][j + 1]]--;
    for (int y = 1; y + K - 1 <= n; y++) {
      res = 0;
      t++;
      for (int k = 0; k < K; k++)
        add(x - 1, y + k), add(x + K, y + k), add(x + k, y - 1),
            add(x + k, y + K);
      ans = max(ans, res);
      if (y + K - 1 != n)
        for (int i = 0; i < K; i++) sz[c[x + i][y]]++, sz[c[x + i][y + K]]--;
      else
        for (int i = 0; i < K; i++)
          for (int j = 0; j < K; j++) sz[c[x + i][n - j]]++;
    }
  }
  cout << ans + K * K;
  return 0;
}
