#include <bits/stdc++.h>
using namespace std;
template <class _T>
inline void read(_T &_x) {
  int _t;
  bool _flag = false;
  while ((_t = getchar()) != '-' && (_t < '0' || _t > '9'))
    ;
  if (_t == '-') _flag = true, _t = getchar();
  _x = _t - '0';
  while ((_t = getchar()) >= '0' && _t <= '9') _x = _x * 10 + _t - '0';
  if (_flag) _x = -_x;
}
const int maxn = 1010;
int n, m;
char s[maxn][maxn], mp[maxn][maxn];
int cur, tot, fir[maxn], cnt[maxn];
void NO() {
  puts("NO");
  exit(0);
}
int getcol(char ch) {
  if ('a' <= ch && ch <= 'd') return ch - 'a';
  return 4;
}
char getcolR(int a, int b) {
  bool col[5];
  memset(col, false, sizeof col);
  for (int i = a - 1; i <= a + 1; ++i)
    for (int j = b; j <= b + 2; ++j) col[getcol(mp[i][j])] = true;
  col[getcol(mp[a][b - 1])] = true;
  col[getcol(mp[a][b + 3])] = true;
  for (int i = 0; i < 4; ++i)
    if (!col[i]) return (char)('a' + i);
  NO();
  return ' ';
}
char getcolD(int a, int b) {
  bool col[5];
  memset(col, false, sizeof col);
  for (int j = b - 1; j <= b + 1; ++j)
    for (int i = a; i <= a + 2; ++i) col[getcol(mp[i][j])] = true;
  col[getcol(mp[a - 1][b])] = true;
  col[getcol(mp[a + 3][b])] = true;
  for (int i = 0; i < 4; ++i)
    if (!col[i]) return (char)('a' + i);
  NO();
  return ' ';
}
void paintR(int a, int b) {
  if (s[a][b] != 'w' || s[a][b + 1] != 'b' || s[a][b + 2] != 'w') NO();
  mp[a][b] = mp[a][b + 1] = mp[a][b + 2] = getcolR(a, b);
  s[a][b] = s[a][b + 1] = s[a][b + 2] = '.';
  fir[a] = b + 3;
  cnt[a] -= 3;
}
void paintD(int a, int b) {
  if (s[a][b] != 'w' || s[a + 1][b] != 'b' || s[a + 2][b] != 'w') NO();
  mp[a][b] = mp[a + 1][b] = mp[a + 2][b] = getcolD(a, b);
  s[a][b] = s[a + 1][b] = s[a + 2][b] = '.';
  for (int i = 0; i < 3; ++i) {
    --cnt[a + i];
    if (fir[a + i] == b) ++fir[a + i];
  }
}
void print() {
  for (int i = 1; i <= n; ++i) printf("%s\n", mp[i] + 1);
  puts("-------------------");
}
int main() {
  read(n), read(m);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) mp[i][j] = '.';
  for (int i = 1; i <= n; ++i) {
    scanf("%s", s[i] + 1);
    for (int j = m; j >= 1; --j) {
      if (s[i][j] != '.') {
        fir[i] = j;
        ++cnt[i];
      }
    }
    tot += cnt[i];
  }
  cur = 1;
  while (tot) {
    while (!cnt[cur]) ++cur;
    int a = cur, b = fir[cur];
    while (s[a][b] == '.') ++b;
    if (s[a][b] == 'b') NO();
    if (s[a][b + 1] == 'b')
      paintR(a, b);
    else
      paintD(a, b);
    tot -= 3;
  }
  puts("YES");
  for (int i = 1; i <= n; ++i) printf("%s\n", mp[i] + 1);
  return 0;
}
