#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
const int N = 110;
char g[N][N];
bool marked[N][N];
int n;
char target[] = {'y', 'i', 'z', 'h', 'o', 'n', 'g'};
vector<pair<int, int> > start;
int offset[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}};
bool checkAndMark(int x, int y, int dir) {
int dx = x, dy = y;
for (int j = 0; j < 7; j++) {
if (dx < 0 || dx >= n || dy < 0 || dy >= n || g[dx][dy] != target[j]) {
return false;
}
dx += offset[dir][0];
dy += offset[dir][1];
}
dx = x;
dy = y;
for (int j = 0; j < 7; j++) {
marked[dx][dy] = true;
dx += offset[dir][0];
dy += offset[dir][1];
}
return true;
}
void dfs(int x, int y) {
for (int i = 0; i < 8; i++) {
if (checkAndMark(x, y, i)) {
return;
}
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
char c;
cin >> c;
g[i][j] = c;
if (c == 'y') {
start.push_back(make_pair(i, j));
}
}
}
for (int i = 0; i < start.size(); i++) {
dfs(start[i].x, start[i].y);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (!marked[i][j]) {
cout << '*';
} else {
cout << g[i][j];
}
}
cout << endl;
}
}