#include<bits/stdc++.h>
using namespace std;
#define ll long long
vector<pair<int,int>> mozes,brojevi;
char lista[15][15];
int n,m,tacke=0;

bool moze(int x){

}


bool probaj(){
     for(int i=0;i<brojevi.size();i++){
        int temp=0;
        int broj = lista[brojevi[i].first][brojevi[i].second] - '0';
        if(brojevi[i].first>1 && lista[brojevi[i].first-1][brojevi[i].second] == 'C') temp++;
        if(brojevi[i].first!=n && lista[brojevi[i].first+1][brojevi[i].second] == 'C') temp++;
        if(brojevi[i].second>1 && lista[brojevi[i].first][brojevi[i].second-1] == 'C') temp++;
        if(brojevi[i].second!=m && lista[brojevi[i].first][brojevi[i].second+1] == 'C') temp++;

        if(broj != temp) return false;
     }

     bool tacke[13][13];

     for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(lista[i][j]== '.') tacke[i][j]= true;
            else tacke[i][j] = false;
        }
     }
     for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(lista[i][j]== 'C'){
                for(int k=i-1;k>0;k--){
                    if(lista[k][j]=='#' || isdigit(lista[k][j])) break;
                    if(lista[k][j] == '.') tacke[k][j]=false;
                    if(lista[k][j]== 'C') return false;
                }
                for(int k=i+1;k<=n;k++){
                    if(lista[k][j]=='#' || isdigit(lista[k][j])) break;
                    if(lista[k][j] == '.') tacke[k][j]=false;
                    if(lista[k][j]== 'C') return false;
                }
                for(int k=j+1;k<=m;k++){
                    if(lista[i][k]=='#' || isdigit(lista[i][k])) break;
                    if(lista[i][k] == '.') tacke[i][k]=false;
                    if(lista[i][k]== 'C') return false;
                }
                for(int k=j-1;k>0;k--){
                    if(lista[i][k] == '#' || isdigit(lista[i][k])) break;
                    if(lista[i][k] == '.') tacke[i][k]=false;
                    if(lista[i][k] == 'C') return false;
                }
            }
        }
    }

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(tacke[i][j] == true) return false;
        }
     }

    return true;
}


void resi(int trenutni){
    if(probaj()){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cout << lista[i][j];
            }
            cout << endl;
        }
        exit(1);
    }
    for(int i=trenutni;i<mozes.size();i++){
        if(1){
            lista[mozes[i].first][mozes[i].second] = 'C';
            resi(i+1);
            lista[mozes[i].first][mozes[i].second] = '.';
        }
    }
}


int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;

    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin >> lista[i][j];
            if(lista[i][j]== '.'){
                tacke++;
                mozes.push_back({i,j});
            }
            else if(isdigit(lista[i][j])) brojevi.push_back({i,j});
        }
    }

    if(tacke == n*m){
        int x=1;
        while(x <= min(n,m)){
            lista[x][x]= 'C';
            x++;
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cout << lista[i][j];
            }
            cout << endl;
        }
        return 0;
    }

    resi(0);
    cout << -1;
    return 0 ;
}