A: Taking a Seat-Taking a Seat-

story

Mr. A entered the classroom at the examination site to take an examination. However, Mr. A is a very nervous type. Therefore, depending on the situation, there may be seats that Mr. A does not want to sit in. Therefore, Mr. A decided to find out how many seats he could sit on based on certain conditions.

problem

Mr. A is a nervous type of person. First of all, Mr. A cannot sit in the first row from the front. Because when I sit near the proctor, I get nervous and can't solve the problem. Also, if there is a person on the right or left, Mr. A cannot sit down. This is because the sound of the pencil next to me makes it impossible to concentrate during the test. In addition, you can't sit near a noisy guy (near 8 diagonally up, down, left, and right). This is because my voice echoes in my head during the break and I can't rest. Also, it's natural, but I can't sit in the seat where the students are already sitting.

Is there a place where Mr. A can sit under these conditions? Assuming that M x N seats are lined up in the classroom, let's find the number.

Input format

The first row gives M (number of rows: number of vertical seats) and N (number of columns: number of horizontal seats). From the second line, M lines and a character string of length N are given line by line. The j character of the i-th character string represents the state of the seat in the i-th row and the j-th column. Each letter is either'-',' x'or'o', vacant seats'-', noisy students sitting during breaks'x', other students sitting' Let it be o'.

Constraint

* 0 <M ≤ 100
* 0 <N ≤ 100



Output format

Output the number of seats that Mr. A can sit in one line depending on the conditions. Don't forget the line break at the end.

Input example 1


5 5
--o--
--xo-
--x--
o --- x
--xoo


Output example 1


3

Input example 2


2 6
--oooo
x--o--


Output example 2


1

Input example 3


3 5
-----
-----
-----


Output example 3


Ten

Input example 4


4 6
o-oxoo
oo-ooo
oooxo-
o-ooox


Output example 4


0





Example

Input

5 5
--o--
--xo-
--x--
o---x
--xoo


Output

3
#include <bits/stdc++.h>
  
using namespace std;
  
#define rep(i,n) REP(i,0,n)
#define REP(i,s,e) for(int i=(s); i<(int)(e); i++)
#define repr(i, n) REPR(i, n, 0)
#define REPR(i, s, e) for(int i=(int)(s-1); i>=(int)(e); i--)
#define pb push_back
#define all(r) r.begin(),r.end()
#define rall(r) r.rbegin(),r.rend()
#define fi first
#define se second
  
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
 
const int INF = 1e9;
const ll MOD = 1e9 + 7;
double EPS = 1e-8;

// #define DEBUG_MODE
#ifdef DEBUG_MODE
#define dump(x) cout << #x << " : " << x << endl
#define LINE cout << "line : " << __LINE__ << endl
#define dumpV(v) cout << #v << " : ["; for(auto& t : v) cout << t << ", "; cout<<"]" << endl
#define STOP assert(false)
#else
#define dump(x) ;
#define LINE 	;
#define dumpV(v);
#define STOP 	;
#endif
#define mp make_pair

namespace std{
  template<class S,class T>
  ostream &operator <<(ostream& out,const pair<S,T>& a){
    out<<'('<<a.fi<<", "<<a.se<<')';
    return out;
  }
}


int main(){
	int h, w;
	cin >> h >> w;
	vector<string> s(h);
	rep(i, h) cin >> s[i];
	auto isOutOfRange = [](int h, int w, int H, int W) {
		return h < 0 || h >= H || w < 0 || w >= W;
	};
	
	rep(i, h) rep(j, w) {
		if(s[i][j] == 'x') {
			REP(k, -1, 2) REP(l, -1, 2) {
				int x = j + l;
				int y = i + k;
				if(isOutOfRange(y, x, h, w) || s[y][x] != '-') continue;
				s[y][x] = 'z';
			}
		}
		else if(s[i][j] == 'o') {
			REP(k, -1, 2) {
				int x = j + k;
				int y = i;
				if(isOutOfRange(y, x, h, w) || s[y][x] != '-') continue;
				s[y][x] = 'z';
			}
		}
	}
	int ans = 0;
	REP(i, 1, h) rep(j, w) if(s[i][j] == '-') ans++;
	cout << ans << endl;
	rep(i, h) dump(s[i]);
	return 0;
}