#include<bits/stdc++.h>
using namespace std;
char a[1100][1100];
int vis[1100][1100];
int n, m;
int dirt[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1},{0,-1},};
int main() {
cin >> n >> m;
int dx, dy;
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= m; j ++) {
cin >> a[i][j];
if(a[i][j] == 'M') vis[i][j] = 1;
else if(a[i][j] == 'H') {
vis[i][j] = 1;
for(int k = 0; k <8; k++) {
dx = i+dirt[k][0];
dy = j+dirt[k][1];
if(dx >=1 && dx <= n && dy >=1 && dy <=m)
vis[dx][dy] = 1;
}
}
}
}
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <=m; j ++) {
if(vis[i][j] != 1) {
if(a[i][j] == 'L') {
int flag = 0;
for(int k = 0; k < 8; k ++) {
dx = i+dirt[k][0];
dy = j+dirt[k][1];
if( dx < 1 || dx > n || dy <1 || dy >m || a[dx][dy] != 'L') {
flag = 1;
break;
}
}
if(flag == 0) {
vis[i][j] = 2;
}
for(int k = 0; k < 8; k ++) {
dx = i+dirt[k][0];
dy = j+dirt[k][1];
if(dx >=1 && dx <= n && dy >=1 && dy <=m &&a[dx][dy] == 'G' && vis[dx][dy] == 0)
vis[dx][dy] = 3;
}
}
}
}
}
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <=m; j ++) {
if(vis[i][j] == 2 && a[i][j] == 'L') {
a[i][j] = 'S';
}
if(vis[i][j] == 3 && a[i][j] == 'G') {
a[i][j] = 'N';
}
if(vis[i][j] == 0 && a[i][j] == 'G') {
a[i][j] = 'B';
}
}
}
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= m; j++) {
printf("%c",a[i][j]);
if(j == m)printf("\n");
}
}
return 0;
}