#include<bits/stdc++.h>
using namespace std;
const int maxn = 1010;
char mp[maxn][maxn];
int f[2][maxn][maxn];
int g[2][maxn][maxn];
void print(int a[2][maxn][maxn], int state, int n, int m){
for(int i = 0; i <= n; i++){
for(int j = 0; j <= m; j++){
printf("%-11d ", a[state][i][j]);
}
printf("\n");
}
printf("\n");
}
int main(){
int n, m;
scanf("%d%d",&n, &m);
getchar();
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
mp[i][j] = getchar();
if(mp[i][j] == '#'){
f[0][i][j] = f[1][i][j] = -0x3f3f3f3f;
g[0][i][j] = g[1][i][j] = 0x3f3f3f3f;
}
}
getchar();
}
for(int i = 2; i <= n; i++){
g[0][i][0] = g[1][i][0] = 0x3f3f3f3f;
f[0][i][0] = f[1][i][0] = -0x3f3f3f3f;
}
for(int j = 2; j <= m; j++){
g[1][0][j] = g[0][0][j] = 0x3f3f3f3f;
f[1][0][j] = f[0][0][j] = -0x3f3f3f3f;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(i == 1 && j == 1) continue;
if(mp[i][j] == '#') continue;
f[0][i][j] = max(f[0][i][j-1], f[1][i][j-1]+1);
f[1][i][j] = max(f[1][i-1][j], f[0][i-1][j]+1);
g[0][i][j] = min(g[0][i][j-1], g[1][i][j-1]+1);
g[1][i][j] = min(g[1][i-1][j], g[0][i-1][j]+1);
}
}
if(f[0][n][m] <= 0 && f[1][n][m] <= 0) printf("-1\n");
else printf("%d %d\n", max(f[0][n][m], f[1][n][m])-1, min(g[0][n][m], g[1][n][m]));
return 0;
}