#include <iostream>

int mat[500][500] = {0};
int h, w;

void mapiraj(int xp, int yp, int x, int y)
{
	if(mat[y][x]>mat[yp][xp]+1||mat[y][x]==-1){
	mat[y][x]=mat[yp][xp]+1;
	if(x<w)
		mapiraj(x, y, x+1, y);
	if(x>0)
		mapiraj(x, y, x-1, y);
	if(y<h)
		mapiraj(x, y, x, y+1);
	if(y>0)
		mapiraj(x, y, x, y-1);
	if(y<h&&x<w)
		mapiraj(x, y, x+1, y+1);
	if(x>0&&y>0)
		mapiraj(x, y, x-1, y-1);
	if(x>0&&y<h)
		mapiraj(x, y, x-1, y+1);
	if(x<w&&y>0)
		mapiraj(x, y, x+1, y-1);}
	
}

int main()
{
	scanf("%d%d", &h, &w);
	for(int i = 0;i<h;i++)
	{
		for(int j = 0;j<w;j++)
		{
			char c;
			scanf(" %c", &c);
			if(c=='#')
				mat[i][j] = -2;
			else if(c=='.')
				mat[i][j] = -1;
		}
	}
	mat[0][0] = 0;
	mapiraj(0, 0, 1, 0);
	mapiraj(0, 0, 1, 1);
	mapiraj(0, 0, 0, 1);
	printf("%d", mat[h-1][w-1]);
	return 0;
}