#include<cstdio>
int H,W,Sr[111][111],Sc[111][111],f[111][111][111],Ex,Ey;
char a[111][111];
int rows(int i,int l,int r){return l<=r?Sr[i][r]-Sr[i][l-1]:0;}
int cols(int i,int l,int r){return l<=r?Sc[r][i]-Sc[l-1][i]:0;}
int min(int a,int b){return a<b?a:b;}
int max(int a,int b){return a>b?a:b;}
void cmax(int&a,int b){b>a?a=b:1;}
int main(){
	scanf("%d%d",&H,&W);
	for(int i=1;i<=H;i++){
		scanf("%s",a[i]+1);
		for(int j=1;j<=W;j++){
			Sr[i][j]=Sr[i][j-1]+(a[i][j]=='o');
			Sc[i][j]=Sc[i-1][j]+(a[i][j]=='o');
			if(a[i][j]=='E')Ex=i,Ey=j;
		}
	}
	for(int u=1,rd=H-Ex+1;u<=Ex;u++,rd++)
	for(int d=H,ru=H-Ex+1;d>=Ex;d--,ru--)
	for(int l=1,rr=W-Ey+1;l<=Ey;l++,rr++)
	for(int r=W,rl=W-Ey+1;r>=Ey;r--,rl--){
		if(u-1>=ru)f[d][l][r]+=rows(u-1,max(l,rl),min(r,rr));
		if(d+1<=rd)cmax(f[d][l][r],f[d+1][l][r]+rows(d+1,max(l,rl),min(r,rr)));
		if(l-1>=rl)cmax(f[d][l][r],f[d][l-1][r]+cols(l-1,max(u,ru),min(d,rd)));
		if(r+1<=rr)cmax(f[d][l][r],f[d][l][r+1]+cols(r+1,max(u,ru),min(d,rd)));
	}
	printf("%d\n",f[Ex][Ey][Ey]);
}