/*Made by Shivam Solanki*/
#include<bits/stdc++.h>
using namespace std;
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define ll long long int
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vll> vvl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<pii> vp;
typedef vector<pll> vpll;
typedef map<int,int> mii;
typedef map<ll,ll> mll;
typedef set<int> sii;
typedef set<ll> sll;
typedef priority_queue<int> pq;
typedef unordered_map<int,int> umii;
typedef unordered_map<ll,ll> umll;
typedef queue<int> qii;
#define rep(i,k,n) for (int i = k; i < n; ++i)
#define repr(i,k,n) for (int i = n; i>=k; --i)
#define repll(i,k,n) for (ll i = k; i < n; ++i)
#define repllr(i,k,n) for (ll i = n; i >= k; --i)
#define pb push_back
#define mp make_pair
#define gcd __gcd
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
const int INF = 1e9+5;
const int MOD = 1e9+7;
void solve(){
int n,m;
cin>>n>>m;
vector<vector<char>> adj(n,vector<char>(m));
rep(i,0,n){
rep(j,0,m){
cin>>adj[i][j];
}
}
auto is_valid=[&](int i,int j){
if(i>=0 and i<n and j>=0 and j<m) return 1;
return 0;
};
int ans=0;
rep(i,0,n){
rep(j,0,m){
if(adj[i][j]=='x'){
int multiplier=4;
if(is_valid(i+1,j) and adj[i+1][j]=='x') multiplier--;
if(is_valid(i,j+1) and adj[i][j+1]=='x') multiplier--;
if(is_valid(i-1,j) and adj[i-1][j]=='x') multiplier--;
if(is_valid(i,j-1) and adj[i][j-1]=='x') multiplier--;
ans+=multiplier;
}
}
}
cout<<ans<<'\n';
}
int main(){
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
// fastio;
int t=1;
// cin>>t;
while(t--)
solve();
return 0;
}
LypNYWRlIGJ5IFNoaXZhbSBTb2xhbmtpKi8KI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4gCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgREVCVUcoeCkgY291dCA8PCAnPicgPDwgI3ggPDwgJzonIDw8IHggPDwgZW5kbDsKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPGxsPiB2bGw7CnR5cGVkZWYgdmVjdG9yPHZsbD4gdnZsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKdHlwZWRlZiB2ZWN0b3I8dmk+IHZ2aTsKdHlwZWRlZiB2ZWN0b3I8Ym9vbD4gdmI7CnR5cGVkZWYgdmVjdG9yPHZiPiB2dmI7CnR5cGVkZWYgdmVjdG9yPHBpaT4gdnA7CnR5cGVkZWYgdmVjdG9yPHBsbD4gdnBsbDsKdHlwZWRlZiBtYXA8aW50LGludD4gbWlpOwp0eXBlZGVmIG1hcDxsbCxsbD4gbWxsOwp0eXBlZGVmIHNldDxpbnQ+IHNpaTsKdHlwZWRlZiBzZXQ8bGw+IHNsbDsKdHlwZWRlZiBwcmlvcml0eV9xdWV1ZTxpbnQ+IHBxOwp0eXBlZGVmIHVub3JkZXJlZF9tYXA8aW50LGludD4gdW1paTsKdHlwZWRlZiB1bm9yZGVyZWRfbWFwPGxsLGxsPiB1bWxsOwp0eXBlZGVmIHF1ZXVlPGludD4gcWlpOwojZGVmaW5lIHJlcChpLGssbikgZm9yIChpbnQgaSA9IGs7IGkgPCBuOyArK2kpIAojZGVmaW5lIHJlcHIoaSxrLG4pIGZvciAoaW50IGkgPSBuOyBpPj1rOyAtLWkpCiNkZWZpbmUgcmVwbGwoaSxrLG4pIGZvciAobGwgaSA9IGs7IGkgPCBuOyArK2kpIAojZGVmaW5lIHJlcGxscihpLGssbikgZm9yIChsbCBpID0gbjsgaSA+PSBrOyAtLWkpIAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGdjZCBfX2djZAojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCkseC5lbmQoKQojZGVmaW5lIGZhc3RpbyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CmNvbnN0IGludCBJTkYgPSAxZTkrNTsKY29uc3QgaW50IE1PRCA9IDFlOSs3OwoKdm9pZCBzb2x2ZSgpewogICAgaW50IG4sbTsKICAgIGNpbj4+bj4+bTsKICAgIHZlY3Rvcjx2ZWN0b3I8Y2hhcj4+IGFkaihuLHZlY3RvcjxjaGFyPihtKSk7CiAgICByZXAoaSwwLG4pewogICAgICAgIHJlcChqLDAsbSl7CiAgICAgICAgICAgIGNpbj4+YWRqW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIGF1dG8gaXNfdmFsaWQ9WyZdKGludCBpLGludCBqKXsKICAgICAgICBpZihpPj0wIGFuZCBpPG4gYW5kIGo+PTAgYW5kIGo8bSkgcmV0dXJuIDE7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgaW50IGFucz0wOwogICAgcmVwKGksMCxuKXsKICAgICAgICByZXAoaiwwLG0pewogICAgICAgICAgICBpZihhZGpbaV1bal09PSd4Jyl7CiAgICAgICAgICAgICAgICBpbnQgbXVsdGlwbGllcj00OwogICAgICAgICAgICAgICAgaWYoaXNfdmFsaWQoaSsxLGopIGFuZCBhZGpbaSsxXVtqXT09J3gnKSBtdWx0aXBsaWVyLS07CiAgICAgICAgICAgICAgICBpZihpc192YWxpZChpLGorMSkgYW5kIGFkaltpXVtqKzFdPT0neCcpIG11bHRpcGxpZXItLTsKICAgICAgICAgICAgICAgIGlmKGlzX3ZhbGlkKGktMSxqKSBhbmQgYWRqW2ktMV1bal09PSd4JykgbXVsdGlwbGllci0tOwogICAgICAgICAgICAgICAgaWYoaXNfdmFsaWQoaSxqLTEpIGFuZCBhZGpbaV1bai0xXT09J3gnKSBtdWx0aXBsaWVyLS07CiAgICAgICAgICAgICAgICBhbnMrPW11bHRpcGxpZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxhbnM8PCdcbic7Cn0gCiAgCmludCBtYWluKCl7CiAgICAvLyAjaWZuZGVmIE9OTElORV9KVURHRSAgCiAgICAgICAgLy8gZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7IAogICAgICAgIC8vIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7IAogICAgLy8gI2VuZGlmIAogICAgLy8gZmFzdGlvOwogICAgaW50IHQ9MTsKICAgIC8vIGNpbj4+dDsKICAgIHdoaWxlKHQtLSkKICAgICAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0=