#include <bits/stdc++.h>
using namespace std;
int n, m;
string s[200];
bool check(int i, int j, int x) {
  int cnt = 0;
  if (i < n - 1 && s[i + 1][j] == '*') ++cnt;
  if (i > 0 && s[i - 1][j] == '*') ++cnt;
  if (j < m - 1 && s[i][j + 1] == '*') ++cnt;
  if (j > 0 && s[i][j - 1] == '*') ++cnt;
  if (i < n - 1 && j < m - 1 && s[i + 1][j + 1] == '*') ++cnt;
  if (i > 0 && j > 0 && s[i - 1][j - 1] == '*') ++cnt;
  if (i < n - 1 && j > 0 && s[i + 1][j - 1] == '*') ++cnt;
  if (i > 0 && j < m - 1 && s[i - 1][j + 1] == '*') ++cnt;
  return cnt == x;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; ++i) cin >> s[i];
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (s[i][j] == '.') {
        if (!check(i, j, 0)) return cout << "NO" << '\n', 0;
      } else if (isdigit(s[i][j])) {
        if (!check(i, j, s[i][j] - '0')) return cout << "NO" << '\n', 0;
      }
  cout << "YES" << '\n';
  return 0;
}
