#include <bits/stdc++.h>
using namespace std;
int R, C;
string grid[3000];
long long num[3000][3000];
void add(long long &x, long long y) {
  x += y;
  if (x >= 1000000007) x -= 1000000007;
}
long long calc(int i0, int j0, int i1, int j1) {
  if (i0 == i1 || j0 == j1) return 0;
  if (grid[i0][j0] == '#' || grid[i1 - 1][j1 - 1] == '#') return 0;
  for (int i = i0; i < i1; i++) {
    for (int j = j0; j < j1; j++) {
      if (i == i0 && j == j0) {
        num[i][j] = 1;
        continue;
      }
      num[i][j] = 0;
      if (i > i0 && grid[i - 1][j] == '.') add(num[i][j], num[i - 1][j]);
      if (j > j0 && grid[i][j - 1] == '.') add(num[i][j], num[i][j - 1]);
    }
  }
  return num[i1 - 1][j1 - 1];
}
int main() {
  cin >> R >> C;
  for (int i = 0; i < R; i++) cin >> grid[i];
  long long a0 = calc(0, 1, R - 1, C);
  long long a1 = calc(1, 0, R, C - 1);
  long long a2 = calc(0, 1, R, C - 1);
  long long a3 = calc(1, 0, R - 1, C);
  long long ans =
      (a0 * a1 % 1000000007 - a2 * a3 % 1000000007 + 1000000007) % 1000000007;
  cout << ans << endl;
}
