#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,m,pozi,pozj,broj=0;
char matrica[1005][1005];
int brojevi[1005][1005];
void rek(int i,int j,int br){
    if(i>n || i<0 || j>m || j<0){//izlazi iz matrice
        return;
    }
    if(matrica[i][j]!='.' || brojevi[i][j]>0){//nije slobodan ili je vec obradjen
        return;
    }
    matrica[i][j]='z';
    brojevi[i][j]=br;broj++;
    rek(i+1,j,br+1);
    rek(i,j+1,br+1);
    rek(i-1,j,br+1);
    rek(i,j-1,br+1);
}
void poc(int i,int j,int br=0){
    broj++;
    rek(i+1,j,br+1);
    rek(i,j+1,br+1);
    rek(i-1,j,br+1);
    rek(i,j-1,br+1);
}
void rek2(int i,int j,int br){
    if(i>n || i<0 || j>m || j<0){//izlazi iz matrice
        return;
    }
    if(matrica[i][j]!='z'){//nije slobodan ili obradjen je
        //cout<<i<<" "<<j<<" "<<matrica[i][j]<<endl;
        return;
    }
    int bb=br*(-1)-1;
    if(bb>brojevi[i][j] && brojevi[i][j]>0)return;
    if(brojevi[i][j]<0)return;
    brojevi[i][j]=br;broj--;
    //cout<<i<<" "<<j<<endl;
    rek2(i+1,j,br-1);
    rek2(i,j+1,br-1);
    rek2(i-1,j,br-1);
    rek2(i,j-1,br-1);
}
void poc2(int i,int j,int br=-1){
    //cout<<i<<" "<<j<<endl;
    rek2(i+1,j,br-1);
    rek2(i,j+1,br-1);
    rek2(i-1,j,br-1);
    rek2(i,j-1,br-1);
}
int main(){
    ios_base::sync_with_stdio(false);cin.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            char c;cin>>c;
            matrica[i][j]=c;
            if(c=='X')brojevi[i][j]=-1;
            if(c=='S'){pozi=i;pozj=j;}
        }
    }
    poc(pozi,pozj);
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(brojevi[i][j]==-1){
                poc2(i,j);
                //cout<<endl<<endl;
            }
        }
    }
    /*for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cerr<<brojevi[i][j]<<" ";
        }cerr<<endl;
    }*/
    cout<<broj;
    return 0;
}