#include<bits/stdc++.h>
using namespace std;
int n, m,rs,cs,br;
char Mapa[1022][1022];
int mapas[1022][1022];
int mapav[1022][1022];
int  DR[4] = { -1,  0,  1,   0};  
int  DC[4] = {  0,  1,  0,  -1};  
queue <int > Qrs, Qcs, Qrv, Qcv;
void BFSS ( int r, int c){
    Qrs.push(r);
    Qcs.push(c);
    Mapa[r][c]='S';
    mapas[r][c]=0;

    while(Qrs.size()){
         r=Qrs.front();
         c=Qcs.front();
         for(int k=0; k<4 ; k++){
            if(Mapa[r+DR[k]][c+DC[k]]=='.' or Mapa[r+DR[k]][c+DC[k]]=='X'){
                Qcs.push(c+DC[k]);
                Qrs.push(r+DR[k]);
                mapas[r+DR[k]][c+DC[k]]=mapas[r][c]+1;
                Mapa[r+DR[k]][c+DC[k]]='S';
            }
         }
    Qrs.pop();
    Qcs.pop();
    }
}
void BFSV ( int r, int c){
    Qrv.push(r);
    Qcv.push(c);
    Mapa[r][c]='X';
    mapav[r][c]=0;

    while(Qrv.size()){
         r=Qrv.front();
         c=Qcv.front();
         for(int k=0; k<4 ; k++){
            if(Mapa[r+DR[k]][c+DC[k]]=='.' or Mapa[r+DR[k]][c+DC[k]]=='S'){
                Qcv.push(c+DC[k]);
                Qrv.push(r+DR[k]);
                mapav[r+DR[k]][c+DC[k]]=mapav[r][c]+1;
                Mapa[r+DR[k]][c+DC[k]]='X';
            }
         }
    Qrv.pop();
    Qcv.pop();
    }
}
int main () {
    cin>>n>>m;
    memset(Mapa,'*',sizeof(Mapa));
    for(int i=1; i<= n; i++){
        for(int j=1; j<= m; j++){
            mapas[i][j]=100000;
            mapav[i][j]=100000;
            cin>>Mapa[i][j];       
            if(Mapa[i][j]=='S')
            {
                 rs=i;
                 cs=j;
                
            }
            if(Mapa[i][j]=='X'){
                Qrv.push(i);
                Qcv.push(j);
                mapav[i][j]=0;
                Mapa[i][j]='*';
            }
        }
        
    }
    int rv=Qrv.front();
    int cv=Qcv.front();
    BFSV(rv,cv);
    BFSS(rs,cs);
    
    for(int i=1; i<= n; i++){
        for(int j=1; j<= m; j++){
            if(mapas[i][j]<mapav[i][j]){
                br++;
            }
        }
    }
    cout<<br<<endl;
    

    return 0;
}