#include<bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define ppb pop_back
#define umax(x,y) x=max(x,y)
#define umin(x,y) x=min(x,y)
#define ll long long
#define ii pair<int,int>
#define iii pair<ii,int>
#define iiii pair<ii,ii>
#define sz(x) ((int) x.size())
#define orta ((bas+son)>>1)
#define all(x) x.begin(),x.end()
#define dbgs(x) cerr<<(#x)<<" --> "<<(x)<<" "
#define dbg(x) cerr<<(#x)<<" --> "<<(x)<<endl;getchar()
#define pw(x) (1<<(x))
#define inf 1005000000
#define MOD 1000000007
#define N 903
#define M 1000005
#define LOG 20
#define KOK 32000
using namespace std;

char s[N][N];
int h,w,pre[2][N][N];
ll ans;

int main() {

	//freopen("input.txt","r",stdin);

	scanf("%d %d",&h,&w);

	for(int i=h+1;i<=2*h;i++) scanf("%s",s[i]+1+w);

	for(int i=1;i<=3*h;i++) {

		for(int j=1;j<=3*w;j++) {

			pre[0][i][j]=pre[0][i-1][j-1]+(s[i][j]=='#');

		}

		for(int j=3*w;j>=1;j--) {

			pre[1][i][j]=pre[1][i-1][j+1]+(s[i][j]=='#');

		}

	}

	for(int i=h+1;i<=2*h;i++) {

		for(int j=w+1;j<=2*w;j++) {

			for(int k=1;k<=max(h,w);k++) {

				int tot=(s[i-k][j]=='#')+(s[i+k][j]=='#')+(s[i][j-k]=='#')+(s[i][j+k]=='#');

				ans+=tot*(tot-1)*(tot-2)/6;

				if(s[i-k][j]=='#' && s[i][j+k]=='#') {

					tot=pre[0][i+k-1][j-1]-pre[0][i][j-k];

					ans+=tot;

				}

				if(s[i][j+k]=='#' && s[i+k][j]=='#') {

					tot=pre[1][i-1][j-k+1]-pre[1][i-k][j];

					ans+=tot;

				}

				if(s[i+k][j]=='#' && s[i][j-k]=='#') {

					tot=pre[0][i-1][j+k-1]-pre[0][i-k][j];

					ans+=tot;

				}

				if(s[i][j-k]=='#' && s[i-k][j]=='#') {

					tot=pre[1][i+k-1][j+1]-pre[1][i][j+k];

					ans+=tot;

				}

			}

		}

	}

	printf("%lld",ans);

}