#include <stdio.h>

char sah[15][15];
static int k[15][15];
int pomx[]={0,0,1,-1};
int pomy[]={1,-1,0,0};
int n,m;
int x=0,maxx=0;
char mat[15][15];

int pripada(int i,int j){
    if(i>=0 && i<n && j>=0 && j<m){
        return 1;
    }
    return 0;
}

int napadaju(int i,int j){
    for(int a=i-1;a>=0;a--){
        if((sah[a][j]>='0' && sah[a][j]<='4') || sah[a][j]=='#'){
            break;
        }
        else if(sah[a][j]=='C'){
            return 0;
        }
    }
    for(int a=j-1;a>=0;a--){
        if((sah[i][a]>='0' && sah[i][a]<='4') || sah[i][a]=='#'){
            break;
        }
        else if(sah[i][a]=='C'){
            return 0;
        }
    }
    for(int a=i+1;a<n;a++){
        if((sah[a][j]>='0' && sah[a][j]<='4') || sah[a][j]=='#'){
            break;
        }
        else if(sah[a][j]=='C'){
            return 0;
        }
    }
    for(int a=j+1;a<m;a++){
        if((sah[i][a]>='0' && sah[i][a]<='4') || sah[i][a]=='#'){
            break;
        }
        else if(sah[i][a]=='C'){
            return 0;
        }
    }
   return 1;
}

int moze(int i,int j){
    for(int a=0;a<4;a++){
        if(pripada(i+pomy[a],j+pomx[a])){
            if((k[i+pomy[a]][j+pomx[a]]==0)||(k[i+pomy[a]][j+pomx[a]]==-1)){
                return 0;
            }
        }
    }
    return 1;
}

int proveri(){
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(k[i][j]>0){
                return 0;
            }
        }

    }
    return 1;
}

void smanji(int i,int j){
    for(int a=0;a<4;a++){
        if(pripada(i+pomy[a],j+pomx[a])){
            if(k[i+pomy[a]][j+pomx[a]]>0){
                k[i+pomy[a]][j+pomx[a]]--;
            }
        }
    }
}

void povecaj(int i,int j){
    for(int a=0;a<4;a++){
        if(pripada(i+pomy[a],j+pomx[a])){
            if(k[i+pomy[a]][j+pomx[a]]>=0){
                k[i+pomy[a]][j+pomx[a]]++;
            }
        }
    }
}

void postavi(int i,int j){
    if(i==n){
        if(proveri()){
            if(x>maxx){
            maxx=x;
            for(int a=0;a<n;a++){
                for(int b=0;b<m;b++){
                    mat[a][b]=sah[a][b];
                }
            }
        }
        }
    }
    else{
        if(j<m){
            if(moze(i,j) && napadaju(i,j) && sah[i][j]=='.'){
                sah[i][j]='C';x++; smanji(i,j);
                postavi(i,j+1);
                sah[i][j]='.';x--;povecaj(i,j);
                postavi(i,j+1);
            }
            else{
                postavi(i,j+1);
            }
        }
        else if(j==m){
            postavi(i+1,0);
        }
}

}


int main()
{
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            k[i][j]=-1;
        }
    }
    getchar();
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            sah[i][j]=getchar();
            if(sah[i][j]>='0' && sah[i][j]<='4'){
                k[i][j]=sah[i][j]-'0';
                if(k[i][j]==0){
                    k[i][j]=-1;
                }
            }
            else{
                k[i][j]=-2;
            }
        }
        getchar();
    }
    postavi(0,0);
    if(maxx==0){
        printf("-1");
    }
    else{
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            printf("%c",mat[i][j]);
        }
        printf("\n");
    }
    }
    return 0;
}