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 <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <list>

using namespace std;

typedef long long ll;

#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(ll i=(a);i<(b);++i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
#define ctos(d) string(1,d)
#define print(x) cout<<#x<<" = "<<x<<endl;

#define MOD 1000000007

int main() {
  ll h, w;
  cin >> h >> w;
  vector<string> vs;
  rep(i, 0, h) {
    string s;
    cin >> s;
    vs.pb(s);
  }
  ll d[300][300];
  clr(d, 0);
  rep(y, 0, h) {
    rep(x, 0, w) {
      if (vs[y][x] == 'o') {
        d[y + 100][x + 100] = 1;
      }
      if (vs[y][x] == 'x') {
        d[y + 100][x + 100] = 2;
      }
    }
  }
  ll c = 0;
  rep(y,101,100+h){
    rep(x,100,100+w){
      if(d[y][x]!=0)continue;
      if(d[y][x-1]==1||d[y][x+1]==1)continue;
      if(d[y][x-1]==2||d[y][x+1]==2)continue;
      if(d[y-1][x]==2||d[y+1][x]==2)continue;
      if(d[y-1][x-1]==2||d[y-1][x+1]==2)continue;
      if(d[y+1][x-1]==2||d[y+1][x+1]==2)continue;
      c++;
    }
  }
  cout << c << endl;
  return 0;
}