#include <bits/stdc++.h>
using namespace std;
char _;
const int maxN = 500 + 5;
const int mod = 1000 * 1000 * 1000 + 7;
const int base = 701;
const int SQ = 500;
const int maxL = 20;
char a[maxN][maxN];
int col[maxN][maxN];
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
int n, k;
int sz[maxN * maxN];
bool is_in(int x, int y) {
  if (x < 0 || y < 0 || x >= n || y >= n) return false;
  return true;
}
void dfs(int x, int y, int c) {
  col[x][y] = c;
  sz[c]++;
  for (int i = 0; i < 4; i++) {
    int v = x + dx[i], u = y + dy[i];
    if (is_in(v, u) && a[v][u] == '.' && col[v][u] == 0) dfs(v, u, c);
  }
}
int ted[maxN * maxN];
bool mark[maxN * maxN];
void add(int x, int y) {
  for (int i = x; i < x + k; i++)
    for (int j = y; j < y + k; j++) ted[col[i][j]]++;
}
void erase(int x, int y) {
  for (int i = x; i < x + k; i++)
    for (int j = y; j < y + k; j++) ted[col[i][j]]--;
}
void add_column(int x, int y) {
  for (int i = x; i < x + k; i++) ted[col[i][y]]++;
}
void erase_column(int x, int y) {
  for (int i = x; i < x + k; i++) ted[col[i][y]]--;
}
vector<int> bads;
int add_cell(int x, int y) {
  if (is_in(x, y) && a[x][y] == '.' && mark[col[x][y]] == 0) {
    bads.push_back(col[x][y]);
    mark[col[x][y]] = 1;
    return sz[col[x][y]];
  }
  return 0;
}
int calc(int x, int y) {
  int res = 0;
  for (int i = x; i < x + k; i++) {
    res += add_cell(i, y - 1);
    res += add_cell(i, y + k);
  }
  for (int j = y; j < y + k; j++) {
    res += add_cell(x - 1, j);
    res += add_cell(x + k, j);
  }
  for (int i = 0; i < bads.size(); i++) {
    res -= ted[bads[i]];
    mark[bads[i]] = 0;
  }
  bads.clear();
  return res;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) cin >> a[i][j];
  int cnt = 1;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (a[i][j] == '.' && col[i][j] == 0) dfs(i, j, cnt++);
  int ans = 0;
  for (int i = 0; i < n - k + 1; i++)
    for (int j = 0; j < n - k + 1; j++) {
      if (j == 0) add(i, j);
      ans = max(ans, calc(i, j));
      if (j == n - k)
        erase(i, j);
      else {
        add_column(i, j + k);
        erase_column(i, j);
      }
    }
  cout << ans + k * k << endl;
  return 0;
}
