#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define vint vector::iterator #define vintp vector >::iterator #define inf 1000000 #define ll long long #define maxn 100010 #define mod 1000000007 using namespace std; ifstream fin ("A.in"); ofstream fout("A.out"); char s[101][101]; int d[101][101],viz[101][101]; int maxv,n,m,l; struct que { int i,j; }q[100001]; int main () { cin>>n>>m; for (int i=1; i<=n; ++i) cin>>s[i]+1; if (s[1][1] == '&') { cout<<0; return 0; } q[++l].i = 1; q[l].j = 1; d[1][1] = 1; for (int i=1; i<=n; ++i) { viz[i][m+1] = 1; } for (int i=1; i<=m; ++i) { viz[n+1][i] = 1; } for (int ss=1; ss<=l; ++ss) { int i=q[ss].i; int j=q[ss].j; maxv = max (maxv,d[i][j]); if (!viz[i+1][j] && s[i+1][j] != '&') { viz[i+1][j] = 1; ++l; q[l].i = i+1; q[l].j = j; d[i+1][j] = d[i][j] + 1; } if (!viz[i][j+1] && s[i][j+1] != '&') { viz[i][j+1] = 1; ++l; q[l].i = i; q[l].j = j+1; d[i][j+1] = d[i][j] + 1; } } cout<