func_code_string: #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;   }   