#include<stdio.h>
char a[102][102],b[102][102];
const char c[8]="yizhong";
int v[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};
struct node{
int x,y;
}p[7];
void DFS(int x,int y,int k,int sum)
{
if(sum==7)
{
int i;
for(i=0;i<7;i++) b[p[i].x][p[i].y]='*';
}
else
{
int dx=x+v[k][0],dy=y+v[k][1];
if(a[dx][dy]==c[sum+1] || sum==6)
{
p[sum].x=x,p[sum].y=y;
DFS(dx,dy,k,sum+1);
}
}
}
int main()
{
int n;
scanf("%d",&n);
int i,j,k;
getchar();
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) a[i][j]=getchar();
getchar();
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]=='y')
{
for(k=0;k<8;k++)
if(a[i+v[k][0]][j+v[k][1]]=='i') DFS(i,j,k,0);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(b[i][j]=='*') printf("%c",a[i][j]);
else printf("*");
}
printf("\n");
}
return 0;
} ```c