#include <iostream>

using namespace std;

const int DX[]={-1, 1, 0, 0};
const int DY[]={0, 0, -1, 1};

int main()
{
    int N,M;
    cin>>N>>M;

    char labirint[N][M];
    int stevaX,stevaY;
    int vatra[N][M];
    int steva[N][M];

    for(int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
        {
            cin>>labirint[i][j];
            if(labirint[i][j]=='S')
            {
                stevaX=i;
                stevaY=j;
            }
            if(labirint[i][j]=='X')
            {
                vatra[i][j]=0;
            }
            else
            {
                vatra[i][j]=-1;
            }
            steva[i][j]=-1;
        }
    }

    for(int korak=0;korak<N*M;korak++)
    {
        bool ima_promena=false;
        for(int i=0;i<N;i++)
        {
            for(int j=0;j<M;j++)
            {
                if(vatra[i][j]==korak)
                {
                    for(int d=0;d<4;d++)
                    {
                        int x=i+DX[d];
                        int y=j+DY[d];
                        if(x>=0 && y>=0 && x<N && y<M && labirint[x][y]!='*' && vatra[x][y]==-1)
                        {
                            vatra[x][y]=korak+1;
                            ima_promena=true;
                        }
                    }
                }
            }
        }
        if(!ima_promena) break;
    }

    steva[stevaX][stevaY]=0;
    for(int korak=0;korak<N*M;korak++)
    {
        bool ima_promena=false;
        for(int i=0;i<N;i++)
        {
            for(int j=0;j<M;j++)
            {
                if(steva[i][j]==korak)
                {
                    for(int d=0;d<4;d++)
                    {
                        int x=i+DX[d];
                        int y=j+DY[d];
                        if(x>=0 && y>=0 && x<N && y<M && labirint[x][y]!='*' && steva[x][y]==-1)
                        {
                            if(vatra[x][y]==-1 || korak+1<vatra[x][y])
                            {
                                steva[x][y]=korak+1;
                                ima_promena=true;
                            }
                        }
                    }
                }
            }
        }
        if(!ima_promena) break;
    }

    int br=1;
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
        {
            if(labirint[i][j]=='.' && steva[i][j]!=-1 && (vatra[i][j]==-1||steva[i][j]<vatra[i][j]))
            {
                br++;
            }
        }
    }

    cout<<br<<endl;

    return 0;
}