#include <bits/stdc++.h>
using namespace std;
int main() {
  cin.tie(NULL);
  ios_base::sync_with_stdio(false);
  int n, m;
  cin >> n;
  cin >> m;
  vector<string> ar = vector<string>(n);
  for (int i = 0; i < n; i++) {
    cin >> ar[i];
  }
  vector<vector<int> > fr = vector<vector<int> >(n, vector<int>(m));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (ar[i][j] == '*') {
        int t = i - 1;
        int l = j - 1;
        if (t >= 0) {
          if (l >= 0) {
            fr[t][l]++;
          }
          l++;
          fr[t][l]++;
          l++;
          if (l < m) {
            fr[t][l]++;
          }
        }
        t++;
        l = j - 1;
        if (l >= 0) {
          fr[t][l]++;
        }
        l++;
        fr[t][l]++;
        l++;
        if (l < m) {
          fr[t][l]++;
        }
        t++;
        l = j - 1;
        if (t < n) {
          if (l >= 0) {
            fr[t][l]++;
          }
          l++;
          fr[t][l]++;
          l++;
          if (l < m) {
            fr[t][l]++;
          }
        }
      }
    }
  }
  long long x = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (fr[i][j] == 0) {
        if (ar[i][j] == '.' || ar[i][j] == '*') {
          x++;
        }
      } else {
        if ((ar[i][j] - '0' == fr[i][j]) || ar[i][j] == '*') {
          x++;
        }
      }
    }
  }
  cout << ((x == m * n) ? "YES" : "NO");
  return 0;
}
