#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(),v.end()
#define pb push_back
int a[610][610];
int sumx[610][610],sumy[610][610];
int main(){
    cin.tie(0);ios::sync_with_stdio(false);
    int h,w,ans=0,twice=0;
    cin>>h>>w;
    char s[310][310];
    rep(i,h){
        rep(j,w){
            cin>>s[i][j];
            if(s[i][j]=='#'){
                int x=i+300,y=j;
                a[x+y-300][x-y]=1;
            }
        }
    }
    rep(i,600){
        sumx[i][0]=a[i][0];
        rep(j,599){
            sumx[i][j+1]=sumx[i][j]+a[i][j+1];
        }
    }
    rep(j,600){
        sumy[0][j]=a[0][j];
        rep(i,599){
            sumy[i+1][j]=sumy[i][j]+a[i+1][j];
        }
    }
    rep(x,600){
        rep(y1,600){
            rep(y2,600){
                if(a[x][y1]&&a[x][y2]&&y2>y1){
                    int d=y2-y1;
                    if(x-d>=0){
                        ans+=sumx[x-d][y2]-(y1?sumx[x-d][y1-1]:0);
                        twice+=a[x-d][y2];
                        twice+=a[x-d][y1];
                    }
                    if(x+d<600){
                        ans+=sumx[x+d][y2]-(y1?sumx[x+d][y1-1]:0);
                        twice+=a[x+d][y2];
                        twice+=a[x+d][y1];
                    }
                }
            }
        }
    }
    rep(y,600){
        rep(x1,600){
            rep(x2,600){
                if(a[x1][y]&&a[x2][y]&&x2>x1){
                    int d=x2-x1;
                    if(y-d>=0){
                        ans+=sumy[x2][y-d]-(x1?sumy[x1-1][y-d]:0);
                        twice+=a[x2][y-d];
                        twice+=a[x1][y-d];
                    }
                    if(y+d<600){
                        ans+=sumy[x2][y+d]-(x1?sumy[x1-1][y+d]:0);
                        twice+=a[x2][y+d];
                        twice+=a[x1][y+d];
                    }
                }
            }
        }
    }
    cout<<ans-twice/2<<endl;
    return 0;
}