#include <bits/stdc++.h>
using namespace std;
const int abc = 26;
class query {
 public:
  int x1, y1, x2, y2;
  char c;
};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m, k;
  cin >> n >> m >> k;
  vector<string> s(n);
  for (int i = 0; i < n; i++) cin >> s[i];
  vector<query> v(k);
  vector<vector<long long> > g(n + 1, vector<long long>(m + 1, 0));
  vector<vector<vector<long long> > > cnt(
      abc, vector<vector<long long> >(n + 1, vector<long long>(m + 1, 0)));
  vector<vector<vector<long long> > > q(
      abc, vector<vector<long long> >(n + 1, vector<long long>(m + 1, 0)));
  for (int i = 0; i < k; i++) {
    cin >> v[i].x1 >> v[i].y1 >> v[i].x2 >> v[i].y2 >> v[i].c;
    cnt[v[i].c - 'a'][--v[i].x1][--v[i].y1]++;
    cnt[v[i].c - 'a'][v[i].x1][v[i].y2]--;
    cnt[v[i].c - 'a'][v[i].x2][v[i].y1]--;
    cnt[v[i].c - 'a'][v[i].x2][v[i].y2]++;
  }
  vector<vector<long long> > d(abc, vector<long long>(m, 0));
  for (int i = 0; i < n; i++) {
    vector<long long> sum(abc, 0);
    for (int j = 0; j < m; j++) {
      long long changed = 0;
      long long sf = 0, pf = 0, sfcnt = 0, pfcnt = 0;
      for (int c = 0; c < abc; c++) {
        d[c][j] += cnt[c][i][j];
        sum[c] += d[c][j];
        g[i + 1][j + 1] += abs(s[i][j] - 'a' - c) * sum[c];
        sf += c * sum[c];
        sfcnt += sum[c];
        changed += sum[c];
      }
      for (int c = 0; c < abc; c++) {
        long long cnt1 = sf + pf;
        cnt1 += abs(s[i][j] - 'a' - c) * (k - changed);
        q[c][i + 1][j + 1] += cnt1;
        pfcnt += sum[c];
        pf += pfcnt;
        sfcnt -= sum[c];
        sf -= sfcnt;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      g[i + 1][j + 1] += g[i + 1][j] + g[i][j + 1] - g[i][j];
      for (int c = 0; c < abc; c++)
        q[c][i + 1][j + 1] += q[c][i + 1][j] + q[c][i][j + 1] - q[c][i][j];
    }
  }
  long long ans = 1e18;
  for (int i = 0; i < k; i++) {
    long long changed =
        q[v[i].c - 'a'][v[i].x2][v[i].y2] - q[v[i].c - 'a'][v[i].x2][v[i].y1] -
        q[v[i].c - 'a'][v[i].x1][v[i].y2] + q[v[i].c - 'a'][v[i].x1][v[i].y1];
    long long rest =
        g.back().back() - (g[v[i].x2][v[i].y2] - g[v[i].x2][v[i].y1] -
                           g[v[i].x1][v[i].y2] + g[v[i].x1][v[i].y1]);
    ans = min(ans, rest + changed);
  }
  cout << ans << "\n";
  return 0;
}
