#include <stdio.h>

int N,M;
char labirint[1000][1000];
int vatra[1000][1000],steva[1000][1000];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int steva_x,steva_y;
int i,j;

int main(){
    scanf("%d%d",&N,&M);
    for(i=0;i<N;i++){
        scanf("%s",labirint[i]);
        for(j=0;j<M;j++){
            vatra[i][j]=0;
            steva[i][j]=0;
            if(labirint[i][j]=='X'){vatra[i][j]=1;}
            if(labirint[i][j]=='S'){steva_x=i;steva_y=j;steva[i][j]=1;}
        }
    }

    int promenja=1;
    while(promenja){
        promenja=0;
        for(i=0;i<N;i++){
            for(j=0;j<M;j++){
                if(vatra[i][j]>0){
                    for(int k=0;k<4;k++){
                        int ni=i+dx[k],nj=j+dy[k];
                        if(ni>=0&&ni<N&&nj>=0&&nj<M&&labirint[ni][nj]=='.'&&vatra[ni][nj]==0){
                            vatra[ni][nj]=vatra[i][j]+1;
                            promenja=1;
                        }
                    }
                }
            }
        }
    }

    steva[steva_x][steva_y]=1;
    promenja=1;
    while(promenja){
        promenja=0;
        for(i=0;i<N;i++){
            for(j=0;j<M;j++){
                if(steva[i][j]>0){
                    for(int k=0;k<4;k++){
                        int ni=i+dx[k],nj=j+dy[k];
                        if(ni>=0&&ni<N&&nj>=0&&nj<M&&labirint[ni][nj]=='.'&&steva[ni][nj]==0&&vatra[ni][nj]==0){
                            steva[ni][nj]=steva[i][j]+1;
                            promenja=1;
                        }
                    }
                }
            }
        }
    }

    int rezultat=0;
    for(i=0;i<N;i++){
        for(j=0;j<M;j++){
            if(steva[i][j]>0&&vatra[i][j]==0){rezultat++;}
        }
    }
    printf("%d\n",rezultat);
    return 0;
}