#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

int H,W,sum[101][101],sx,sy,f[101][101][101],ans;
char str[101];

inline int get(int l,int r,int u,int d){return sum[d][r]-sum[d][l-1]-sum[u-1][r]+sum[u-1][l-1];}

int main(){
	scanf("%d%d",&H,&W);
	for(int i=1;i<=H;++i){
		scanf("%s",str+1);
		for(int j=1;j<=W;++j){sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+(str[j]=='o');if(str[j]=='E')sx=i,sy=j;}
	}
	for(int u=0;u<sx;++u)for(int d=0;d<=H-sx;++d){
		int U=max(sx-u,d+1),D=min(sx+d,H-u);if(U>D)continue;
		for(int l=0;l<sy;++l)for(int r=0;r<=W-sy;++r){
			int L=max(sy-l,r+1),R=min(sy+r,W-l);if(L>R)continue;
			ans=max(ans,f[d][l][r]);
			if(l+r<sy-1)f[d][l+1][r]=max(f[d][l+1][r],f[d][l][r]+get(sy-l-1,sy-l-1,U,D));
			if(l+r<W-sy)f[d][l][r+1]=max(f[d][l][r+1],f[d][l][r]+get(sy+r+1,sy+r+1,U,D));
			if(u+d<H-sx)f[d+1][l][r]=max(f[d+1][l][r],f[d][l][r]+get(L,R,sx+d+1,sx+d+1));
			if(u+d<sx-1)f[d+0][l][r]=max(f[d+0][l][r],f[d][l][r]+get(L,R,sx-u-1,sx-u-1));
		}
	}
	printf("%d",ans);
}