using System;

namespace Programme
{
    class Programme
    {
        public static void printCharMatrix(char[,] arr, int n, int m)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write(arr[i,j]);
                }
                Console.WriteLine();
            }
        }
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split(' ');
            int n = Convert.ToInt32(s[0]);
            int m = Convert.ToInt32(s[1]);
            int freeSpaces = 0;
            char[,] arr = new char[n, m];
            bool[,] bools = new bool[n, m];
            for (int i = 0; i < n; i++)
            {
                string temp = Console.ReadLine();
                for (int j = 0; j < m; j++)
                {
                    arr[i,j] = temp[j];
                    if (arr[i,j] == '.')
                    {
                        freeSpaces++;
                    }
                    bools[i,j] = true;
                }
            }
            int currentFields = 1;
            while (freeSpaces > 0)
            {
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        bools[i,j] = true;
                    }
                }
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        /*//Vatra
                        if (((i - 1) >= 0) && (arr[i - 1, j] != '*') && arr[i, j] == 'X' && bools[i,j])
                        {
                            if (arr[i - 1, j] == '.')
                            {
                                freeSpaces--;
                            }
                            arr[i - 1, j] = 'X';
                            bools[i - 1, j] = false;
                            freeSpaces--;
                        }
                        else if (((i + 1) < n) && (arr[i + 1, j] != '*') && arr[i, j] == 'X' && bools[i, j])
                        {
                            arr[i + 1, j] = 'X';
                            bools[i + 1, j] = false;
                            freeSpaces--;
                        }
                        else if (((j - 1) >= 0) && (arr[i, j - 1] != '*') && arr[i, j] == 'X' && bools[i, j])
                        {
                            arr[i, j - 1] = 'X';
                            bools[i, j - 1] = false;
                            freeSpaces--;
                        }
                        else if (((j + 1) < m) && (arr[i, j + 1] != '*') && arr[i, j] == 'X' && bools[i, j])
                        {
                            arr[i, j + 1] = 'X';
                            bools[i, j + 1] = false;
                            freeSpaces--;
                        }
                        //Steva
                        else if (((i - 1) >= 0) && (arr[i - 1, j] == '.') && arr[i, j] == 'S' && bools[i, j])
                        {
                            arr[i - 1, j] = 'S';
                            currentFields++;
                            bools[i - 1, j] = false;
                            freeSpaces--;
                        }
                        else if (((i + 1) < n) && (arr[i + 1, j] == '.') && arr[i, j] == 'S' && bools[i, j])
                        {
                            arr[i + 1, j] = 'S';
                            currentFields++;
                            bools[i + 1, j] = false;
                            freeSpaces--;
                        }
                        else if (((j - 1) >= 0) && (arr[i, j - 1] == '.') && arr[i, j] == 'S' && bools[i, j])
                        {
                            arr[i, j - 1] = 'S';
                            currentFields++;
                            bools[i, j - 1] = false;
                            freeSpaces--;
                        }
                        else if (((j + 1) < m) && (arr[i, j + 1] == '.') && arr[i, j] == 'S' && bools[i, j])
                        {
                            arr[i, j + 1] = 'S';
                            currentFields++;
                            bools[i, j + 1] = false;
                            freeSpaces--;
                        }*/
                        if (((i+1) < n) && (arr[i, j] == 'X') && (arr[i + 1, j] != '*') && bools[i, j])
                        {
                            if (arr[i + 1, j] == '.')
                            {
                                freeSpaces--;
                            }
                            else if (arr[i + 1, j] == 'S' && !bools[i + 1, j])
                            {
                                currentFields--;
                            }
                            if (arr[i + 1, j] != 'X')
                            {
                                arr[i + 1, j] = 'X';
                                bools[i + 1, j] = false;
                            }
                        }
                        if ((i > 0) && (arr[i, j] == 'X') && (arr[i - 1, j] != '*') && bools[i, j])
                        {
                            if (arr[i - 1, j] == '.')
                            {
                                freeSpaces--;
                            }
                            else if (arr[i - 1, j] == 'S' && !bools[i - 1, j])
                            {
                                currentFields--;
                            }
                            if (arr[i - 1, j] != 'X')
                            {
                                arr[i - 1, j] = 'X';
                                bools[i - 1, j] = false;
                            }
                        }
                        if (((j + 1) < m) && (arr[i, j] == 'X') && (arr[i, j + 1] != '*') && bools[i, j])
                        {
                            if (arr[i, j + 1] == '.')
                            {
                                freeSpaces--;
                            }
                            else if (arr[i, j + 1] == 'S' && !bools[i, j + 1])
                            {
                                currentFields--;
                            }
                            if (arr[i, j + 1] != 'X')
                            {
                                arr[i, j + 1] = 'X';
                                bools[i, j + 1] = false;
                            }
                        }
                        if ((j > 0) && (arr[i, j] == 'X') && (arr[i, j - 1] != '*') && bools[i, j])
                        {
                            if (arr[i, j - 1] == '.')
                            {
                                freeSpaces--;
                            }
                            else if (arr[i, j - 1] == 'S' && !bools[i, j - 1])
                            {
                                currentFields--;
                            }
                            if (arr[i, j - 1] != 'X')
                            {
                                arr[i, j - 1] = 'X';
                                bools[i, j - 1] = false;
                            }
                        }
                        if (((i + 1) < n) && (arr[i, j] == 'S') && (arr[i + 1, j] == '.') && bools[i, j])
                        {
                            arr[i + 1, j] = 'S';
                            freeSpaces--;
                            currentFields++;
                            bools[i + 1, j] = false;
                        }
                        if ((i > 0) && (arr[i, j] == 'S') && (arr[i - 1, j] == '.') && bools[i, j])
                        {
                            arr[i - 1, j] = 'S';
                            freeSpaces--;
                            currentFields++;
                            bools[i - 1, j] = false;
                        }
                        if (((j + 1) < m) && (arr[i, j] == 'S') && (arr[i, j + 1] == '.') && bools[i, j])
                        {
                            arr[i, j + 1] = 'S';
                            freeSpaces--;
                            currentFields++;
                            bools[i, j + 1] = false;
                        }
                        if ((j > 0) && (arr[i, j] == 'S') && (arr[i, j - 1] == '.') && bools[i, j])
                        {
                            arr[i, j - 1] = 'S';
                            freeSpaces--;
                            currentFields++;
                            bools[i, j - 1] = false;
                        }
                    }
                }
            }
            Console.WriteLine(currentFields);
        }
    }
}