#include <bits/stdc++.h>
#include <iostream>
#include <stdio.h>
#include <bitset>
#include <vector>
#include <algorithm>
#include <string>
#include <random>
#include <unordered_set>
#include <iterator>
// 20210422
// ABC 191以前のを解いていく
using namespace std;
using ll = long long;


void digi()
{
    int H, W;
    cin >> H >> W;
    vector<string> input_(H+1);
    vector<vector<string>> S(H+1, vector<string>(W+1, "."));
    vector<int> count_(H+1);

    for (int i=0 ; i < H; i++)
    {  
        cin >> input_.at(i); 
    }
    for (int i=0; i< H; i++)
    {
        for (int j=0; j<W; j++)
        {
            S.at(i).at(j) = input_.at(i).at(j);
        }
    }
    
    // 以下解説を読んで実装する
    // 周囲4マスに注目して頂点ならば自身が#.が3つであることと同値
    // 2マスならば地続きなので頂点ではないことを考える
    
    int tyouten = 0;
    for (int i = 0; i < H-1 ;i++)
    {
        for (int j = 0; j < W-1; j++)
        {
            int coun = 0;
            if (S.at(i).at(j)=="#")
            {
                coun += 1;
            }
            if (S.at(i+1).at(j)=="#")
            {
                coun += 1;
            }
            if (S.at(i).at(j+1)=="#")
            {
                coun += 1;
            }
            if (S.at(i+1).at(j+1)=="#")
            {
                coun += 1;
            }        
            /*
                #.   .#    ..    ..
                ..   ..　  #.    .#   # ga 1ko

                .#   #.    ##    ##
                ##   ##　  .#    #.   # ga 3ko                

            のとき中心の点が頂点であるという
            
            */
            if (coun ==1 || coun == 3)
            {
                tyouten += 1;
            }

        }
    }
    cout << tyouten <<endl;

}

int main()
{

    digi();
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define vll vector<ll>
#define pll pair<ll,ll>
#define vpll vector<pll>
#define ub upper_bound
#define lb lower_bound
#define all(v) ((v).begin()),((v).end())
#define allr(v) ((v).rbegin()),((v).rend())
#define ff first
#define ss second
#define mp make_pair
#define pll pair<ll,ll> 
#define fo(i,n) for(ll i=0;i<n;i++)
#define foa(i,s,e) for(ll i=(s);i<=e;i++)
#define fod(i,s,e) for(ll i= (s);i>=(e);i--)
#define max3(a,b,c) max(max(a,b),c)
#define min3(a,b,c) min(min(a,b),c)
#define deb(x) cerr<<#x<<' '<<'='<<' '<<x<<'\n'
#define sz(x) (ll)(x.size())
#define ANS cout<<ans<<'\n'
#define YES cout<<"YES\n"
#define NO cout<<"NO\n"
#define Yes cout<<"Yes\n"
#define No cout<<"No\n"
const ld pi = 3.14159265358979323846;
//ll MOD = 1e9 + 7;
ll MOD = 998244353;
const char nl = '\n';
const ll inf = 1e15;
#define fill(a,b) memset(a, b, sizeof(a))
#define setbits(x) __builtin_popcountll(x)
#define print2d(dp,n,m) fo(i, n){fo(j, m)cout<<dp[i][j]<<" ";cout<<"\n";}
ll nxt(){ll x; cin >> x; return x;}
ll mul(ll x,ll y){
    return (1ll* (x%MOD)*(y%MOD));
}
ll modpow(ll x,ll y){ll z=1;while(y>0){if(y%2)z=mul(z,x);x =mul(x,x) ;y/=2;}return z;}
ll power(ll x,ll y){ll z=1;while(y>0){if(y%2)z=z*x;x =x*x ;y/=2;}return z;}
ll gcd(ll a,ll b){if(a<b) return gcd(b,a);if(b==0) return a;return gcd(b,a%b);} 
ll min(ll a,ll b){if(a<b)return a;return b;}
ll max(ll a,ll b){if(a>b)return a;return b;}
ll sq(ll a){
    ll ans = (1ll*a*a);
    return ans;
}
void solve(){
    ll n;
    cin >> n;
    ll a[n];
    fo(i, n){
        cin >> a[i];
    }
    ll s = 0;
    fo(i, n){
        ll x;
        cin >> x;
        s += x * a[i];
        //cout << s << nl;
    }
    if(s == 0){
        Yes;
    }
    else No;
}
int main(){ 
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    #ifndef ONLINE_JUDGE
    freopen("inputf.txt" , "r" , stdin) ;
    freopen("outputf.txt" , "w" , stdout) ;
    freopen("error.txt" , "w" , stderr) ;
    #endif
    ll TC = 1;
    //cin>>TC;
    fo(TT, TC){
        // Google,FB cout << "Case #"<< TT + 1 << ": ";
        solve();
    }
    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
}
