#include <bits/stdc++.h>

using namespace std;

#define fi first
#define se second
#define pb push_back
#define mp make_pair

typedef pair<int, int> ii;

int h, w, pref[905][905];

long long sum = 0;

char a[905][905], b[905][905];

bool check(int x, int y) {
    if(x >= 1 && x <= h && y >= 1 && y <= w && a[x][y] == '#') return 1;
    return 0;
}

void solve() {
    for(int i = 1; i <= h; i++) {
        for(int j = 1; j <= w; j++) {
            pref[i][j] = 0;
            if(a[i][j] == '#')
                pref[i][j] = 1;
        }
    }
    for(int i = 1; i <= 3 * h; i++) {
        for(int j = 1; j <= 3 * w; j++) {
            if(i > h || j > w)
                pref[i][j] = 0;
            pref[i][j] += pref[i - 1][j - 1];
        }
    }
    for(int i = 1; i <= h; i++) {
        for(int j = 1; j <= w; j++) {
            if(a[i][j] == '.') continue;
            for(int range = 1; range <= max(h, w); range++) {
                if(check(i + range, j + range))
                    sum = sum + pref[i + 2 * range - 1][j - 1] - pref[i + range - 1][max(j - range - 1, 0)];
            }
        }
    }
}

void rot() {
    for(int j = 1; j <= w; j++) {
        int cnt = 1;
        for(int i = h; i >= 1; i--) {
            b[j][cnt] = a[i][j];
            cnt++;
        }
    }
    swap(w, h);
    for(int i = 1; i <= h; i++) {
        for(int j = 1; j <= w; j++)
            a[i][j] = b[i][j];
    }
}

int main() {
    scanf("%d%d", &h, &w);
    for(int i = 1; i <= h; i++) {
        for(int j = 1; j <= w; j++)
            scanf(" %c", &a[i][j]);
    }
    solve();
    rot(); solve();
    rot(); solve();
    rot(); solve();
    printf("%lld", sum);
}
