func_code_string: #include <bits/stdc++.h>   constexpr int N = 55;   int n;   char a[N][N];   int f[N][N][N][N];   int dfs(int x, int y, int xx, int yy) {     if (~f[x][y][xx][yy]) {       return f[x][y][xx][yy];     } else {       if (x == xx && y == yy) {         return f[x][y][x][y] = (a[x][y] ==  # );       } else {         int res = std::max(xx - x + 1, yy - y + 1);         for (int i = x; i < xx; i++) {           res = std::min(res, dfs(x, y, i, yy) + dfs(i + 1, y, xx, yy));         }         for (int i = y; i < yy; i++) {           res = std::min(res, dfs(x, y, xx, i) + dfs(x, i + 1, xx, yy));         }         return f[x][y][xx][yy] = res;       }     }   }   int main() {     std::ios::sync_with_stdio(false);     std::cin.tie(nullptr);     memset(f, -1, sizeof f);     std::cin >> n;     for (int i = 0; i < n; i++) {       std::cin >> a[i];     }     std::cout << dfs(0, 0, n - 1, n - 1) <<   n ;     return 0;   }   