#include <bits/stdc++.h>
using namespace std;
const int Maxn = 1000000;
int N, M;
string s[Maxn + 5];
vector<int> t[Maxn + 5];
int DFS(int x, int y, int k) {
  if (x == N - 1 && y == M - 1) return 1;
  if (t[x][y] || s[x][y] == '#') return 0;
  t[x][y] = k;
  int tmp = 0;
  if (x < N - 1 && s[x + 1][y] == '.') tmp = DFS(x + 1, y, k);
  if (tmp) return 1;
  if (y < M - 1 && s[x][y + 1] == '.') tmp = DFS(x, y + 1, k);
  if (tmp) return 1;
  return 0;
}
int main() {
  scanf("%d %d", &N, &M);
  for (int i = 0; i < N; i++) {
    cin >> s[i];
    for (int j = 0; j < M; j++) t[i].push_back(0);
  }
  int ans = 0;
  if (N > 1) ans += DFS(1, 0, 1);
  if (M > 1) ans += DFS(0, 1, 2);
  printf("%d\n", ans);
  return 0;
}
