#include <bits/stdc++.h>
using namespace std;
template <typename T>
T in() {
  char ch;
  T n = 0;
  bool ng = false;
  while (1) {
    ch = getchar();
    if (ch == '-') {
      ng = true;
      ch = getchar();
      break;
    }
    if (ch >= '0' && ch <= '9') break;
  }
  while (1) {
    n = n * 10 + (ch - '0');
    ch = getchar();
    if (ch < '0' || ch > '9') break;
  }
  return (ng ? -n : n);
}
char s[1002][1002];
int dx[] = {0, 0, -1, 1};
int dy[] = {-1, 1, 0, 0};
int n, m;
int IsOk(int x, int y) {
  int cnt = 0;
  if (y >= 2 && s[x][y - 1] == 'w' && s[x][y + 1] == 'w') cnt++;
  if (x >= 2 && s[x - 1][y] == 'w' && s[x + 1][y] == 'w') cnt += 2;
  if (cnt == 1 || cnt == 2) return cnt;
  return 0;
}
void FillColor(int x, int y, int f) {
  if (f == 1) {
    for (int i = 0; i < 4; i++) {
      char ch = (i + 'A');
      int ff = 0;
      for (int j = 0; j < 3; j++) {
        if (s[x - 1][y - 1 + j] == ch) {
          ff = 1;
          break;
        }
        if (s[x + 1][y - 1 + j] == ch) {
          ff = 1;
          break;
        }
      }
      if (s[x][y - 2] == ch || s[x][y + 2] == ch) ff = 1;
      if (ff == 0) {
        s[x][y] = s[x][y - 1] = s[x][y + 1] = ch;
        return;
      }
    }
  } else {
    for (int i = 0; i < 4; i++) {
      char ch = (i + 'A');
      int ff = 0;
      for (int j = 0; j < 3; j++) {
        if (s[x - 1 + j][y - 1] == ch) {
          ff = 1;
          break;
        }
        if (s[x - 1 + j][y + 1] == ch) {
          ff = 1;
          break;
        }
      }
      if (s[x - 2][y] == ch || s[x + 2][y] == ch) ff = 1;
      if (ff == 0) {
        s[x][y] = s[x - 1][y] = s[x + 1][y] = ch;
        return;
      }
    }
  }
}
void Prnt() {
  puts("");
  ;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cout << s[i][j];
    }
    puts("");
    ;
  }
  puts("");
  ;
}
int main() {
  cin >> n >> m;
  int tot = n * m, cnt = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> s[i][j];
      if (s[i][j] != '.') cnt++;
    }
  }
  queue<int> q;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (s[i][j] == 'b') {
        if (IsOk(i, j)) {
          q.push(i);
          q.push(j);
        }
      }
    }
  }
  if (cnt % 3) {
    cout << "NO\n";
    return 0;
  }
  int dorkar = cnt / 3;
  while (q.size()) {
    int x = q.front();
    q.pop();
    int y = q.front();
    q.pop();
    int aa = IsOk(x, y);
    if (!aa) continue;
    FillColor(x, y, aa);
    dorkar--;
    if (aa == 1) {
      for (int j = 0; j < 3; j++) {
        if (s[x - 1][y - 1 + j] == 'b') {
          if (IsOk(x - 1, y - 1 + j)) {
            q.push(x - 1);
            q.push(y - 1 + j);
          }
        }
        if (s[x + 1][y - 1 + j] == 'b') {
          if (IsOk(x + 1, y - 1 + j)) {
            q.push(x + 1);
            q.push(y - 1 + j);
          }
        }
      }
      if (s[x][y - 2] == 'b') {
        if (IsOk(x, y - 2)) {
          q.push(x);
          q.push(y - 2);
        }
      }
      if (s[x][y + 2] == 'b') {
        if (IsOk(x, y + 2)) {
          q.push(x);
          q.push(y + 2);
        }
      }
    } else {
      for (int j = 0; j < 3; j++) {
        if (s[x - 1 + j][y - 1] == 'b') {
          if (IsOk(x - 1 + j, y - 1)) {
            q.push(x - 1 + j);
            q.push(y - 1);
          }
        }
        if (s[x - 1 + j][y + 1] == 'b') {
          if (IsOk(x - 1 + j, y + 1)) {
            q.push(x - 1 + j);
            q.push(y + 1);
          }
        }
      }
      if (s[x - 2][y] == 'b') {
        if (IsOk(x - 2, y)) {
          q.push(x - 2);
          q.push(y);
        }
      }
      if (s[x + 2][y] == 'b') {
        if (IsOk(x + 2, y)) {
          q.push(x + 2);
          q.push(y);
        }
      }
    }
    continue;
    int lx = x - 3, ly = y - 3;
    int rx = x + 3, ry = y + 3;
    lx = max(lx, 1);
    rx = min(rx, n);
    ly = max(ly, 1);
    ry = max(ry, m);
    for (int i = lx; i <= rx; i++) {
      for (int j = ly; j <= ry; j++) {
        if (s[i][j] == 'b' && IsOk(i, j)) {
          q.push(i);
          q.push(j);
        }
      }
    }
  }
  if (!dorkar) {
    printf("YES\n");
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        if (s[i][j] == '.')
          cout << s[i][j];
        else
          cout << (char)(tolower(s[i][j]));
      }
      puts("");
      ;
    }
  } else {
    cout << "NO\n";
  }
  return 0;
}
