func_code_string: #include <bits/stdc++.h>   using namespace std;   int dir[4][2] = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};   int n, m, k;   bool isValid(int i, int j) { return i >= 0 && j >= 0 && i < n && j < m; }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cin >> n >> m >> k;     int freex = -1, freey = -1, remains = 0;     char grid[n][m];     bool visited[n][m];     memset(visited, false, sizeof visited);     for (int i = 0; i < n; i++)       for (int j = 0; j < m; j++) {         cin >> grid[i][j];         if (grid[i][j] ==  . ) {           remains++;           freex = i;           freey = j;         }       }     if (k == 0) {       for (int i = 0; i < n; i++) {         for (int j = 0; j < n; j++) {           cout << grid[i][j];         }         cout <<   n ;       }       return 0;     }     queue<pair<int, int>> q;     q.push({freex, freey});     int count = 0;     while (!q.empty()) {       auto tmp = q.front();       q.pop();       int x = tmp.first;       int y = tmp.second;       if (visited[x][y]) continue;       visited[x][y] = true;       count++;       if (count == remains - k) break;       for (int i = 0; i < 4; i++) {         int nx = x + dir[i][0];         int ny = y + dir[i][1];         if (isValid(nx, ny) && grid[nx][ny] ==  .  && !visited[nx][ny])           q.push({nx, ny});       }     }     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         if (!visited[i][j] && grid[i][j] ==  . )           cout <<  X ;         else if (grid[i][j] ==  # )           cout <<  # ;         else           cout <<  . ;       }       cout <<   n ;     }   }   