#include <iostream>
#include <stdio.h>
using namespace std;
short int povezano[10][10], mat[10][10],matGD[10][10],matLD[10][10],visited[10][10];
short int brojac=1;

void checkKocke(short int x,short int y)
{
    if(y>=n)
        return;
    if(x>=n)
    {
        return checkKocke(0,y+1);
    }
    if(mat[x][y]<0)
    {
        return checkKocke(x,y+1);
    }
    if(check==0 &&((i>0)*mat[i-1][j]==-2 + (j>0)*mat[i][j-1]==-2 + (i<n-1)*mat[i+1][j]==-2 + (j<n-1)*mat[i][j+1]==-2)==(-1)*mat[i][j])
    {
        
    }
    else {if(!check)printf("-1");check=1;}
    return;
}
int main()
{
    short int n,m;
    scanf("%hd%hd",&n,&m);
    for(short int i=0;i<n;i++)
    {
        for(short int j=0;j<m;j++)
        {
            char help;
            scanf("%c",&help);
            switch(help)
            {
            case '#':
                mat[i][j]=-1;
                break;
            case '.':
                mat[i][j]=-2;
                break;
            default:
                mat[i][j]=(int)(help)-48;
            }
            mat1[i][j]=mat[i][j];
        }
    }
    checkKocke(0,0);
    return 0;
}