#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return (b == 0 ? a : gcd(b, a % b));
}
int gi() {
  int a;
  scanf("%d", &a);
  return a;
}
long long gli() {
  long long a;
  scanf("%I64d", &a);
  return a;
}
int cases() {
  static int t = gi();
  return t--;
}
char g[500][504];
int r[500][500];
int n, m;
void st(int i, int j, int w) {
  if (i < 0 || i >= n || j < 0 || j >= m || g[i][j] == 'X' || r[i][j]) return;
  r[i][j] = w;
  for (int ii = 0; ii < 3; ii++)
    for (int jj = 0; jj < 3; jj++) st(i + ii - 1, j + jj - 1, w);
  if (i - 2 >= 0 && g[i - 1][j] == 'X' && g[i - 1][j - 1] == 'X')
    st(i - 2, j, 5 - w);
  if (i + 2 < n && g[i + 1][j] == 'X' && g[i + 1][j + 1] == 'X')
    st(i + 2, j, 5 - w);
  if (j - 2 >= 0 && g[i][j - 1] == 'X' && g[i - 1][j - 1] == 'X')
    st(i, j - 2, 5 - w);
  if (j + 2 < m && g[i][j + 1] == 'X' && g[i + 1][j + 1] == 'X')
    st(i, j + 2, 5 - w);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  n = gi();
  m = gi();
  for (int i = 0; i < n; i++) scanf("%s", g[i]);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (g[i][j] == 'X') {
        int c = 0;
        if (g[i - 1][j] == '.') c++;
        if (g[i + 1][j] == '.') c++;
        if (g[i][j - 1] == '.') c++;
        if (g[i][j + 1] == '.') c++;
        if (c % 2) {
          printf("NO\n");
          return 0;
        }
      }
  st(0, 0, 1);
  for (int i = 1; i < n; i += 2)
    for (int j = 0; j < m; j++)
      if (g[i][j] == '.') r[i][j] = 5 - r[i][j];
  printf("YES\n");
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      printf("%d%c",
             r[i][j] ? r[i][j]
                     : r[i - 1][j] + r[i + 1][j] + r[i][j - 1] + r[i][j + 1],
             j == m - 1 ? '\n' : ' ');
  return 0;
}
