#include <stdio.h>

int main()
{
    int N, M;
    scanf("%d %d",&N, &M);
    char tabela[N][M];
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            scanf(" %c",&tabela[i][j]);
        }
    }

    bool moguce = true;
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            switch(tabela[i][j])
            {
                case '0':
                        if(j-1 >= 0 && tabela[i][j-1] == '.')
                        {
                             tabela[i][j-1] = ',';
                        }
                        if(j+1 < M && tabela[i][j+1] == '.')
                        {
                            tabela[i][j+1] = ',';
                        }
                        if(i+1 < N && tabela[i+1][j] == '.')
                        {
                            tabela[i+1][j] =',';
                        }
                        if(i-1 >= 0 && tabela[i-1][j] == '.')
                        {
                            tabela[i-1][j] = ',';
                        }
                    break;
                case '4':
                        if(j-1 >= 0 && tabela[i][j-1] == '.' && j+1 < M && tabela[i][j+1] == '.' &&
                            i+1 < N && tabela[i+1][j] == '.' && i-1 >= 0 && tabela[i-1][j] == '.')
                        {
                            for(int jj = 0; jj < M; jj++)
                            {
                                if(tabela[i][jj] == 'C')
                                {
                                    moguce = false;
                                }
                            }
                            tabela[i][j-1] = 'C';
                            tabela[i][j+1] ='C';
                            for(int ii = 0; ii < N; ii++)
                            {
                                if(tabela[ii][j] == 'C')
                                {
                                    moguce = false;
                                }
                            }
                            tabela[i+1][j] ='C';
                            tabela[i-1][j] = 'C';
                        }
                        else
                        {
                            moguce = false;
                        }
                    break;
                case '3':
                        if(tabela[i-1][j] != 'C' && tabela[i][j+1] != 'C' && tabela[i+1][j] != 'C' &&
                           tabela[i][j+1] != 'C' && tabela[i+1][j] != 'C' && tabela[i][j-1] != 'C' &&
                           tabela[i+1][j] != 'C' && tabela[i][j-1] != 'C' && tabela[i-1][j] != 'C' &&
                           tabela[i][j-1] != 'C' && tabela[i-1][j] != 'C' && tabela[i][j+1] != 'C')
                        {
                            if(i-1 >= 0 && tabela[i-1][j] == '.' && j+1 < M && tabela[i][j+1] == '.' && i+1 < N && tabela[i+1][j] == '.')
                            {
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj])
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                tabela[i-1][j] = 'C';
                                tabela[i][j+1] = 'C';
                                tabela[i+1][j] = 'C';
                            }
                            else if(j+1 < M && tabela[i][j+1] == '.' && i+1 < N && tabela[i+1][j] == '.' && j-1 >= 0 && tabela[i][j-1] == '.')
                            {
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj])
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                tabela[i][j+1] = 'C';
                                tabela[i+1][j] = 'C';
                                tabela[i][j-1] = 'C';
                            }
                            else if(i+1 < N && tabela[i+1][j] == '.' && j-1 >= 0 && tabela[i][j-1] == '.' && i-1 >= 0 && tabela[i-1][j] == '.')
                            {
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj])
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                tabela[i+1][j] = 'C';
                                tabela[i][j-1] = 'C';
                                tabela[i-1][j] = 'C';
                            }
                            else if(j-1 >= 0 && tabela[i][j-1] == '.' && i-1 >= 0 && tabela[i-1][j] == '.' && j+1 < M && tabela[i][j+1] == '.')
                            {
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj])
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                tabela[i][j-1] = 'C';
                                tabela[i-1][j] = 'C';
                                tabela[i][j+1] = 'C';
                            }
                            else
                            {
                                moguce = false;
                            }
                        }
                    break;
                case '2':
                        if( tabela[i][j+1] != 'C' && tabela[i+1][j] != 'C' &&
                            tabela[i+1][j] != 'C' && tabela[i][j-1] != 'C' &&
                            tabela[i][j-1] != 'C' && tabela[i-1][j] != 'C' &&
                            tabela[i-1][j] != 'C' && tabela[i][j+1] != 'C' &&
                            tabela[i][j-1] != 'C' && tabela[i][j+1] != 'C' &&
                            tabela[i-1][j] != 'C' && tabela[i+1][j] != 'C')
                        {
                            if(j-1 >= 0 && tabela[i][j-1] == '.' && j+1 < M && tabela[i][j+1] == '.')
                            {
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(!vertikalno && !moguce)
                                {
                                    tabela[i-1][j] = 'C';
                                    tabela[i+1][j] = 'C';
                                    moguce = true;
                                }
                                else if(moguce)
                                {
                                    tabela[i][j-1] = 'C';
                                    tabela[i][j+1] = 'C';
                                }
                            }
                            else if(j+1 < M && tabela[i][j+1] == '.' && i+1 < N && tabela[i+1][j] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(vertikalno && horizontalno)
                                {
                                    moguce = false;
                                }
                                else if (vertikalno)
                                {
                                    tabela[i][j+1] = 'C';
                                    tabela[i][j-1] = 'C';
                                }
                                else if (horizontalno)
                                {
                                    tabela[i+1][j] = 'C';
                                    tabela[i-1][j] = 'C';
                                }
                                else
                                {
                                    tabela[i][j+1] = 'C';
                                    tabela[i+1][j] = 'C';
                                }
                            }
                            else if(i+1 < N && tabela[i+1][j] == '.' && j-1 >= 0 && tabela[i][j-1] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(vertikalno && horizontalno)
                                {
                                    moguce = false;
                                }
                                else if (vertikalno)
                                {
                                    tabela[i][j+1] = 'C';
                                    tabela[i][j-1] = 'C';
                                }
                                else if (horizontalno)
                                {
                                    tabela[i+1][j] = 'C';
                                    tabela[i-1][j] = 'C';
                                }
                                else
                                {
                                    tabela[i+1][j] = 'C';
                                    tabela[i][j-1] = 'C';
                                }
                            }
                            else if(j-1 >= 0 && tabela[i][j-1] == '.' && i-1 >= 0 && tabela[i-1][j] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(vertikalno && horizontalno)
                                {
                                    moguce = false;
                                }
                                else if (vertikalno)
                                {
                                    tabela[i][j+1] = 'C';
                                    tabela[i][j-1] = 'C';
                                }
                                else if (horizontalno)
                                {
                                    tabela[i+1][j] = 'C';
                                    tabela[i-1][j] = 'C';
                                }
                                else
                                {
                                    tabela[i][j-1] = 'C';
                                    tabela[i-1][j] = 'C';
                                }

                            }
                            else if(i-1 >= 0 && tabela[i-1][j] == '.' && j+1 < M && tabela[i][j+1] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(vertikalno && horizontalno)
                                {
                                    moguce = false;
                                }
                                else if (vertikalno)
                                {
                                    tabela[i][j+1] = 'C';
                                    tabela[i][j-1] = 'C';
                                }
                                else if (horizontalno)
                                {
                                    tabela[i+1][j] = 'C';
                                    tabela[i-1][j] = 'C';
                                }
                                else
                                {
                                    tabela[i-1][j] = 'C';
                                    tabela[i][j+1] = 'C';
                                }
                            }
                            else if(i-1 >= 0 && tabela[i-1][j] == '.' && i+1 < N && tabela[i+1][j] == '.')
                            {
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        moguce = false;
                                        break;
                                    }
                                }
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                if(!horizontalno && !moguce)
                                {
                                    tabela[i][j-1] = 'C';
                                    tabela[i][j+1] = 'C';
                                    moguce = true;
                                }
                                else if(moguce)
                                {
                                    tabela[i-1][j] = 'C';
                                    tabela[i+1][j] = 'C';
                                }
                            }
                            else
                            {
                                moguce = false;
                            }
                        }
                    break;
                case '1':
                        if(tabela[i][j+1] != 'C' &&
                           tabela[i][j-1] != 'C' &&
                           tabela[i+1][j] != 'C' &&
                           tabela[i-1][j] != 'C')
                        {
                            if(j+1 < M && tabela[i][j+1] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(vertikalno && horizontalno)
                                {
                                    moguce = false;
                                }
                                else if (horizontalno)
                                {
                                    if(i-1 >= 0)
                                        tabela[i-1][j] = 'C';
                                    else
                                        tabela[i+1][j] = 'C';
                                }
                                else
                                {
                                    tabela[i][j+1] = 'C';
                                }
                            }
                            else if(j-1 >= 0 && tabela[i][j-1] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(horizontalno && vertikalno)
                                {
                                    moguce = false;
                                }
                                else if (horizontalno)
                                {
                                    if(i-1 >= 0)
                                        tabela[i-1][j] = 'C';
                                    else
                                        tabela[i+1][j] = 'C';
                                }
                                else
                                {
                                    tabela[i][j-1]='C';
                                }
                            }
                            else if (i+1 < N && tabela[i+1][j] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(horizontalno && vertikalno)
                                {
                                    moguce = false;
                                }
                                else if (vertikalno)
                                {
                                    if(j-1>=0)
                                        tabela[i][j-1]='C';
                                    else
                                        tabela[i][j+1]='C';
                                }
                                else
                                {
                                    tabela[i+1][j] = 'C';
                                }
                            }
                            else if (i-1 >= 0 && tabela[i-1][j] == '.')
                            {
                                bool horizontalno = false;
                                for(int jj = 0; jj < M; jj++)
                                {
                                    if(tabela[i][jj] == 'C')
                                    {
                                        horizontalno = true;
                                        break;
                                    }
                                }
                                bool vertikalno = false;
                                for(int ii = 0; ii < N; ii++)
                                {
                                    if(tabela[ii][j] == 'C')
                                    {
                                        vertikalno = true;
                                        break;
                                    }
                                }
                                if(horizontalno && vertikalno)
                                {
                                    moguce = false;
                                }
                                else if (vertikalno)
                                {
                                    if(j-1>=0)
                                        tabela[i][j-1]='C';
                                    else
                                        tabela[i][j+1]='C';
                                }
                                else
                                {
                                    tabela[i-1][j] = 'C';
                                }
                            }
                            else
                            {
                                moguce = false;
                            }
                        }
                    break;
            }

            if(!moguce)
                break;
        }

        if(!moguce)
            break;
    }

    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            if(tabela[i][j] == 'C')
            {
                for(int ii = 0; ii < N; ii++)
                {
                    if(tabela[ii][j] == '.' || tabela[ii][j] == ',')
                    {
                        tabela[ii][j] = 'G';
                    }
                }

                for(int jj = 0; jj < M; jj++)
                {
                    if(tabela[i][jj] == '.' || tabela[i][jj] == ',')
                    {
                        tabela[i][jj] = 'G';
                    }
                }
            }
        }
    }

    int tI = -1;
    int tJ = -1;
    int minBrojTacaka = -1;
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            if(tabela[i][j] == '.')
            {
                int brojTacaka = 0;
                tabela[i][j] = 'C';
                for(int ii = 0; ii < N; ii++)
                {
                    if(tabela[ii][j] == '.' || tabela[ii][j] == ',')
                    {
                        tabela[ii][j] = 'F';
                    }
                }
                for(int jj = 0; jj < M; jj++)
                {
                    if(tabela[i][jj] == '.' || tabela[i][jj] == ',')
                    {
                        tabela[i][jj] = 'F';
                    }
                }
                for(int ii = 0; ii < N; ii++)
                {
                    for(int jj = 0; jj < N; jj++)
                    {
                        if(tabela[ii][jj] == '.' || tabela[ii][jj] == ',')
                        {
                            brojTacaka++;
                        }
                    }
                }
                if(minBrojTacaka == -1)
                {
                    minBrojTacaka = brojTacaka;
                    tI = i;
                    tJ = j;
                }
                else if (minBrojTacaka >= brojTacaka)
                {
                    minBrojTacaka = brojTacaka;
                    tI = i;
                    tJ = j;
                }
                tabela[i][j] = '.';
                for(int ii = 0; ii < N; ii++)
                {
                    for(int jj = 0; jj < N; jj++)
                    {
                        if(tabela[ii][jj] == 'F')
                        {
                            tabela[ii][jj] = '.';
                        }
                    }
                }
            }
        }
    }
    tabela[tI][tJ] = 'C';
    for(int ii = 0; ii < N; ii++)
    {
        if(tabela[ii][tJ] == '.' || tabela[ii][tJ] == ',')
        {
            tabela[ii][tJ] = 'F';
        }
    }
    for(int jj = 0; jj < M; jj++)
    {
        if(tabela[tI][jj] == '.' || tabela[tI][jj] == ',')
        {
            tabela[tI][jj] = 'F';
        }
    }

    if(moguce)
    {
        for(int i = 0; i < N; i++)
        {
            for(int j = 0; j < M; j++)
            {
                if(tabela[i][j]!=',' && tabela[i][j]!='G' && tabela[i][j]!='F')
                    printf("%c",tabela[i][j]);
                else
                    printf(".");
            }
            printf("\n");
        }
    }
    else
    {
        printf("-1");
    }

    return 0;
}