#include <bits/stdc++.h>
using namespace std;
using ll = long long;

ll solve() {
    ll H, W;
    cin >> H >> W;
    ll N = H + W + 2;
    vector<vector<ll>> S(N, vector<ll>(N));
    string s;
    for ( int h = 0; h < H; h++ ) {
        cin >> s;
        for ( int w = 0; w < W; w++ ) {
            if ( s[w] == '#' ) {
                S[h+W-w+1][h+w+1] = 1;
            }
        }
    }

    auto count1 = [](ll N, vector<vector<ll>>& s,bool border) {
        vector<vector<ll>> pt(N);
        vector<vector<ll>> cs(N,vector<ll>(N));
        for ( int i = 0; i < N; i++ ) {
            for ( int j = 1; j < N; j++ ) {
                if ( s[i][j] ) pt[i].push_back(j);
                cs[i][j] = cs[i][j-1] + s[i][j];
            }
        }
        ll c = 0;
        for ( int i = 0; i < N; i++ ) {
            for ( int j1 = 0; j1 < pt[i].size(); j1++ ) {
                for ( int j2 = j1+1; j2 < pt[i].size(); j2++ ) {
                    int p1 = pt[i][j1], p2 = pt[i][j2];
                    int d = p2 - p1;
                    int dd = border ? 0 : 1;
                    if ( i - d >= 0 && p1-1+dd < p2-dd) {
                        c += (ll)(cs[i-d][p2-dd] - cs[i-d][p1-1+dd]);
                    }
                    if ( i + d < N && p1-1+dd < p2-dd ) {
                        c += (ll)(cs[i+d][p2-dd] - cs[i+d][p1-1+dd]);
                    }
                }
            }
        }
        return c;
    };

    ll ans = 0;
    ans += count1(N, S, true);
    for ( int i = 0; i < N; i++ ) {
        for ( int j = i+1; j < N; j++ ) {
            swap(S[i][j],S[j][i]);
        }
    }
    ans += count1(N, S, false);
    return ans;
}

int main() {
    auto ans = solve();
    cout << ans << "\n";
    return 0;
}