#include <cstdio>
#include <cstring>

const int MAXN = 20, MOD = 10007, RP[] = {-1, 0, 1, 0}, SP[] = {0, -1, 0, 1};

int n, m, d[MAXN][MAXN];
char p[MAXN][MAXN];

int voda(int, int);
int ima(int, int);

int main() {
	scanf("%d%d", &n, &m);
	
	for(int i = 0; i < n; ++i)
		scanf("%s", p[i]);
	
	if(p[0][0] == '#' || !ima(0, 0))
		printf("0\n");
	else {
		memset(d, 0, sizeof(d));
		printf("%d\n", voda(0, 0) % MOD);
	}
	
	return 0;
}

int ima(int r, int s) {
	if(r == n - 1 && s == m - 1)
		return 1;
	
	d[r][s] = 1;
	
	int z = 0;
	for(int i = 0; i < 4; ++i) {
		int nr = r + RP[i], ns = s + SP[i];
		if(nr >= 0 && nr < n && ns >= 0 && ns < m && p[nr][ns] != '#' && !d[nr][ns])
			z += voda(nr, ns);
	}
	
	return z;
}

int voda(int r, int s) {
	if(r == n - 1 && s == m - 1)
		return 1;
	
	d[r][s] = 1;
	
	int z = 0;
	for(int i = 0; i < 4; ++i) {
		int nr = r + RP[i], ns = s + SP[i];
		if(nr >= 0 && nr < n && ns >= 0 && ns < m && p[nr][ns] != '#' && !d[nr][ns])
			z += voda(nr, ns);
	}
	
	d[r][s] = 0;
	
	return z;
}
