#include <bits/stdc++.h>
using namespace std;
int n, m;
char mat[505][505];
int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1};
bool dentro(int x, int y) { return x >= 0 && y >= 0 && x < n && y < m; }
int main() {
  while (scanf("%d%d", &n, &m) != EOF) {
    for (int i = int(0); i < int(n); i++) {
      scanf("%s", mat[i]);
      for (int j = int(0); j < int(m); j++)
        if (mat[i][j] == '.') mat[i][j] = 'D';
    }
    bool cant = 0;
    for (int i = int(0); i < int(n); i++) {
      for (int j = int(0); j < int(m); j++) {
        if (mat[i][j] == 'W') {
          for (int k = int(0); k < int(4); k++) {
            int x = i + dx[k], y = j + dy[k];
            if (dentro(x, y) && mat[x][y] == 'S') cant = 1;
          }
        }
      }
    }
    if (cant)
      puts("No");
    else {
      puts("Yes");
      for (int i = int(0); i < int(n); i++) printf("%s\n", mat[i]);
    }
  }
  return 0;
}
