#include <bits/stdc++.h>
using namespace std;
const double pi =
    3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342;
const int MR = 110;
int dx[8] = {0, 0, -1, 1, -1, -1, 1, 1};
int dy[8] = {-1, 1, 0, 0, -1, 1, -1, 1};
int n, m;
bool ok(int x, int y, int k) {
  return x + dx[k] < n && x + dx[k] >= 0 && y + dy[k] < m && y + dy[k] >= 0;
}
char t[MR][MR];
bool isValid(int x, int y) {
  if (t[x][y] == '.') {
    for (int i = 0; i < (8); ++i)
      if (ok(x, y, i) && t[x + dx[i]][y + dy[i]] == '*') return 0;
  }
  if (t[x][y] > '0' && t[x][y] < '9') {
    int ile = t[x][y] - '0';
    int cnt = 0;
    for (int i = 0; i < (8); ++i)
      if (ok(x, y, i) && t[x + dx[i]][y + dy[i]] == '*') cnt++;
    if (cnt != ile) return 0;
  }
  return 1;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (n); ++i) scanf("%s", t[i]);
  for (int i = 0; i < (n); ++i)
    for (int j = 0; j < (m); ++j)
      if (!isValid(i, j)) {
        printf("NO\n");
        return 0;
      }
  printf("YES\n");
  return 0;
}
