#include<iostream>
using namespace std;
int x[]={-1,1,0,0,-1,1,-1,1};
int y[]={0,0,-1,1,-1,-1,1,1};
int n,m;
char str[110][110];
int search(int i,int j)
{
int cnt=0,k,m1=1;
for(k=0;k<8;k++)
{
int i1=i,j1=j;
i1=i1+m1*x[k];j1=j1+m1*y[k];
if(i1<0||j1<0||i1>=n||j1>=m)
continue;
if(str[i1][j1]=='*')
cnt++;
}
return cnt;
}
int main()
{
int num=1;
while(cin>>n>>m&&n&&m)
{
if(num!=1) //注意最后一个输出不能输出空行
cout<<endl;
int i,j,k;
for(i=0;i<n;i++)
cin>>str[i];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(str[i][j]=='.')
{
k=search(i,j);
str[i][j]=k+'0';
}
}
cout<<"Field #"<<num++<<":"<<endl;
for(i=0;i<n;i++)
cout<<str[i]<<endl;
}
return 0;
}