func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 1123;   const int MAXK = 312345;   struct S2DSum {     long long x[MAXN][MAXN];     void integrate(int n, int m) {       for (int j = 0; j < m; j++) {         for (int i = 1; i < n; i++) {           x[i][j] += x[i - 1][j];         }       }       for (int i = 0; i < n; i++) {         for (int j = 1; j < m; j++) {           x[i][j] += x[i][j - 1];         }       }     }     void add(int a, int b, int c, int d, long long e) {       x[a][b] += e;       x[a][d + 1] -= e;       x[c + 1][b] -= e;       x[c + 1][d + 1] += e;     }     long long sum(int a, int b, int c, int d) {       long long ans = x[c][d];       if (a) ans -= x[a - 1][d];       if (b) ans -= x[c][b - 1];       if (a and b) ans += x[a - 1][b - 1];       return ans;     }   };   int n, m, k;   int pic[MAXN][MAXN];   S2DSum orig;   S2DSum cost[26];   S2DSum dc;   int a[MAXK], b[MAXK], c[MAXK], d[MAXK], e[MAXK];   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cin >> n >> m >> k;     for (int i = 0; i < n; i++) {       string s;       cin >> s;       for (int j = 0; j < m; j++) pic[i][j] = s[j] -  a ;     }     for (int i = 0; i < k; i++) {       char ce;       cin >> a[i] >> b[i] >> c[i] >> d[i] >> ce;       e[i] = ce -  a ;       a[i]--;       b[i]--;       c[i]--;       d[i]--;       orig.add(0, 0, n - 1, m - 1, 1);       orig.add(a[i], b[i], c[i], d[i], -1);       for (int j = 0; j < 26; j++) {         cost[j].add(a[i], b[i], c[i], d[i], abs(e[i] - j));       }     }     orig.integrate(n, m);     orig.integrate(n, m);     for (int cl = 0; cl < 26; cl++) {       for (int i = 0; i < n; i++) {         for (int j = 0; j < m; j++) {           long long hm = orig.sum(i, j, i, j);           cost[cl].add(i, j, i, j, abs(cl - pic[i][j]) * hm);         }       }       cost[cl].integrate(n, m);       cost[cl].integrate(n, m);     }     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         dc.add(i, j, i, j, cost[pic[i][j]].sum(i, j, i, j));       }     }     dc.integrate(n, m);     dc.integrate(n, m);     long long ans = numeric_limits<long long>::max();     long long ini = dc.sum(0, 0, n - 1, m - 1);     for (int i = 0; i < k; i++) {       long long sub = ini;       sub -= dc.sum(a[i], b[i], c[i], d[i]);       sub += cost[e[i]].sum(a[i], b[i], c[i], d[i]);       ans = min(ans, sub);     }     cout << ans << endl;   }   