/*
 * Created by SharpDevelop.
 * User: Paki
 * Date: 11/16/2024
 * Time: 6:38 PM
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;

namespace TakmicenjePozar
{
	class Program
	{
		public static void Main(string[] args)
		{
			string[] NiM=Console.ReadLine().Split(' ');
			int N=int.Parse(NiM[0])+2;
			int M=int.Parse(NiM[1])+2;
			int BrojS=1,MaxMesta=0;
			char[,] lavirint=new char[N,M];
			
			for(int i=0;i<N;i++)
			{
				for(int j=0;j<M;j++)
				{
					lavirint[i,j]='*';
				}
			}			
			
			for(int i=1;i<N-1;i++)
			{
				string red=Console.ReadLine();
				red.ToCharArray();
				int rj=0;
				for(int j=1;j<M-1;j++)
				{
					lavirint[i,j]=red[rj];
					rj++;
				}
			}
			
			while(BrojS>0)
			{
				//Kod za sirenje vatre
				for(int i=1;i<N-1;i++)
				{
					for(int j=1;j<M-1;j++)
					{
									
						if(lavirint[i,j]=='x')
						{
							lavirint[i,j]='X';												
						}								
					}				
				}				
				
				for(int i=1;i<N-1;i++)
				{
					for(int j=1;j<M-1;j++)
					{
					
						if(lavirint[i,j]=='X')
						{					
							if(lavirint[i-1,j]!='*' && lavirint[i-1,j]!='x' && lavirint[i-1,j]!='X')
								lavirint[i-1,j]='x';
														
							if(lavirint[i,j-1]!='*' && lavirint[i,j-1]!='x' && lavirint[i,j-1]!='X')
								lavirint[i,j-1]='x';	
							
							if(lavirint[i,j+1]!='*' && lavirint[i,j+1]!='x' && lavirint[i,j+1]!='X')
								lavirint[i,j+1]='x';
							
							if(lavirint[i+1,j]!='*' && lavirint[i+1,j]!='x' && lavirint[i+1,j]!='X')
								lavirint[i+1,j]='x';						
						}	
					}
				}

                //kod za Stevu
				for(int i=1;i<N-1;i++)
				{
					for(int j=1;j<M-1;j++)
					{			
						if(lavirint[i,j]=='s')
							lavirint[i,j]='S';																			
					}				
				}				
				
				for(int i=1;i<N-1;i++)
				{
					for(int j=1;j<M-1;j++)
					{
					
						if(lavirint[i,j]=='S')
						{					
							if(lavirint[i-1,j]=='.')
								lavirint[i-1,j]='s';
														
							if(lavirint[i,j-1]=='.')
								lavirint[i,j-1]='s';	
							
							if(lavirint[i,j+1]=='.')
								lavirint[i,j+1]='s';
							
							if(lavirint[i+1,j]=='.')
								lavirint[i+1,j]='s';							
						}	
					}
				}
				
				int MaloS=0;
				int MaloX=0;
				int TrenutniBrojSteva=0;
					
				for(int G=0;G<N;G++)
				{
					for(int K=0;K<M;K++)
					{
						if(lavirint[G,K]=='S')
						{
							TrenutniBrojSteva++;
						}
						if(lavirint[G,K]=='s')
						{
							TrenutniBrojSteva++;
							MaloS++;
						}
						if(lavirint[G,K]=='x')
						{
							MaloX++;
						}
					}
				}
				
				BrojS=TrenutniBrojSteva;
				
				if(MaxMesta<=BrojS)
				{
					MaxMesta=BrojS;
				}

				if(MaloX==0 && MaloS==0)
				{
					break;
				}
			}
			
			Console.WriteLine(MaxMesta);
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}