#include <stdio.h>
#include <stdlib.h>
//radi samo kada je n=1;
void vatra(int n, int m, char lav[n][m], char t[n][m]){

for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        if(lav[i][j]=='X')
        {
            if(i > 0 && lav[i-1][j] == '.')
                t[i-1][j] = 'X';
            if(i < n-1 && i >0 && lav[i+1][j] == '.')
                t[i+1][j] = 'X';
            if(j > 0 && lav[i][j-1] == '.')
                t[i][j-1] = 'X';
            if(j<m-1 && j>0 && lav[i][j+1] == '.')
                t[i][j+1] = 'X';
        }
    }
}
}
int main(){
int n, m, br=0;
printf("Unesi n(1/2 dimenzije lavirinta): ");
scanf("%d", &n);
printf("Unesi m(2/2 dimenzije lavirinta): ");
scanf("%d", &m);
char lav[n][m];
char t[n][m];
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        while(getchar()!='\n');
        printf("Unesi polje lavirinta [%d][%d]: ", i, j);
        scanf("%c", &lav[i][j]);
        t[i][j]=lav[i][j];
    }
}
int si, sj, pj;
vatra(n, m, lav, t);
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++)
        lav[i][j]=t[i][j];
}
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        if(lav[i][j]=='S'){
            si=i;
            pj=sj=j;
            break;
        }
    }
}
int j=0;
int sum=0;
do{
    br=0;
if(t[si][sj+1]=='.' && t[si][sj+2]!='X'){
    br++;
    vatra(n, m, lav, t);
    t[si][sj+1]='S';
    t[si][sj]='.';
    sj++;
}
sum=sum+br;
}while(br!=0);
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++)
        t[i][j]=lav[i][j];
}
sj=pj;
do{
    br=0;
if(t[si][sj-1]=='.' && t[si][sj-2]!='X'){
    br++;
    vatra(n, m, lav, t);
    t[si][sj-1]='S';
    t[si][sj]='.';
    sj--;
}
sum=sum+br;
}while(br!=0);
sum=sum+1;
printf("%d", sum);
return 0;
}