#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
using namespace std;
const long long N = 1000 + 10;
const long long MOD = 1000000007;
const long long LOG = 20;
const long long INF = 100000000000000010;
const long long delta = 11353;
long long n, m, k, cnt[N][N][26], A[300010], B[300010], C[300010], D[300010],
    grid[N][N];
long long Sum[N][N];
char al[300010];
long long GetSum(long long a, long long b, long long c, long long d) {
  long long res = Sum[c][d] - Sum[a - 1][d] - Sum[c][b - 1] + Sum[a - 1][b - 1];
  return res;
}
long long Getcnt(long long a, long long b, long long c, long long d,
                 long long l) {
  long long res =
      cnt[c][d][l] - cnt[a - 1][d][l] - cnt[c][b - 1][l] + cnt[a - 1][b - 1][l];
  return res;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++) {
      char c;
      cin >> c;
      grid[i][j] = (c - 'a');
    }
  for (long long i = 1; i <= k; i++) {
    cin >> A[i] >> B[i] >> C[i] >> D[i] >> al[i];
    cnt[A[i]][B[i]][al[i] - 'a']++;
    cnt[C[i] + 1][B[i]][al[i] - 'a']--;
    cnt[A[i]][D[i] + 1][al[i] - 'a']--;
    cnt[C[i] + 1][D[i] + 1][al[i] - 'a']++;
  }
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++)
      for (long long l = 0; l < 26; l++) cnt[i][j][l] += cnt[i - 1][j][l];
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++)
      for (long long l = 0; l < 26; l++) cnt[i][j][l] += cnt[i][j - 1][l];
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++) {
      long long ted = 0;
      for (long long l = 0; l < 26; l++) ted += cnt[i][j][l];
      cnt[i][j][grid[i][j]] += k - ted;
      for (long long l = 0; l < 26; l++)
        Sum[i][j] += cnt[i][j][l] * 1ll * (abs(grid[i][j] - l));
    }
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++)
      for (long long l = 0; l < 26; l++) cnt[i][j][l] += cnt[i][j - 1][l];
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++)
      for (long long l = 0; l < 26; l++) cnt[i][j][l] += cnt[i - 1][j][l];
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++) Sum[i][j] += Sum[i][j - 1];
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= m; j++) Sum[i][j] += Sum[i - 1][j];
  long long mn = INF;
  for (long long i = 1; i <= k; i++) {
    long long dis = 0;
    dis = Sum[n][m] - GetSum(A[i], B[i], C[i], D[i]);
    for (long long l = 0; l < 26; l++) {
      dis += Getcnt(A[i], B[i], C[i], D[i], l) * 1ll * abs(l - (al[i] - 'a'));
    }
    mn = min(mn, dis);
  }
  cout << mn;
  return 0;
}
