using namespace std;
#include<bits/stdc++.h>
#define BG begin()
#define ED end()
#define st first
#define nd second
#define PB push_back
#define PF push_front
#define FOR(i,a,b) for (long long i=a;i<b;i++)
#define FORE(i,a,b) for (long long i=a;i<=b;i++)
#define FORD(i,a,b) for (long long i=a;i>=b; i--)
#define ri(n)({\
int neg=0;\
n=0;\
char ch;\
for(ch=getchar(); ch<'0' || ch>'9'; ch=getchar()) if (ch=='-') neg=1-neg;\
n=ch-48;\
for(ch=getchar(); ch>='0' && ch<='9'; ch=getchar()) n=(n<<3)+(n<<1)+ch-48;\
if (neg) n=-n;\
})
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> II;
typedef pair<ll,ll> LL;
const ll INF=1000000000+7;
const double esp=1e-13;
const double pi=3.141592653589;
ll m, n, a[1001][1001], H[1001], dem[1001], L[1001];
int main()
{
//freopen("CREC01.inp", "r", stdin);
//freopen("CREC01.out", "w", stdout);
cin>>m>>n;
char ch;
FORE(i, 1, m)
FORE(j, 1, n) {
cin>>ch;
a[i][j] = ch - '0';
}
memset(H, 0, sizeof(H));
memset(L, 0, sizeof(L));
memset(dem, 0, sizeof(dem));
long long ans = 0;
FORE(i, 1, m)
FORE(j, 1, n) {
//cout<<i<<" "<<j<<" "<<a[i][j]<<endl;
if (a[i][j] == 1) {
H[j]++;
int k = j;
while ( (k > 1) && (a[i][k-1] == 1) && (H[ k - 1 ] >= H[j]) ) k = L[k - 1];
L[j] = k;
dem[j] = H[j]*(j - L[j] + 1) + dem[L[j] - 1];
ans += dem[j];
//cout<<i<<"=="<<j<<"=="<<"=="<<H[j]<<"=="<<ans<<endl;
}
else
{
H[j] = 0;
dem[j]= 0;
L[j] = 0;
}
}
cout<<ans;
}
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgQkcgYmVnaW4oKQojZGVmaW5lIEVEIGVuZCgpCiNkZWZpbmUgc3QgZmlyc3QKI2RlZmluZSBuZCBzZWNvbmQKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBQRiBwdXNoX2Zyb250CiNkZWZpbmUgRk9SKGksYSxiKSBmb3IgKGxvbmcgbG9uZyBpPWE7aTxiO2krKykKI2RlZmluZSBGT1JFKGksYSxiKSBmb3IgKGxvbmcgbG9uZyBpPWE7aTw9YjtpKyspCiNkZWZpbmUgRk9SRChpLGEsYikgZm9yIChsb25nIGxvbmcgaT1hO2k+PWI7IGktLSkKI2RlZmluZSByaShuKSh7XAogICAgaW50IG5lZz0wO1wKICAgIG49MDtcCiAgICBjaGFyIGNoO1wKICAgIGZvcihjaD1nZXRjaGFyKCk7IGNoPCcwJyB8fCBjaD4nOSc7IGNoPWdldGNoYXIoKSkgaWYgKGNoPT0nLScpIG5lZz0xLW5lZztcCiAgICBuPWNoLTQ4O1wKICAgIGZvcihjaD1nZXRjaGFyKCk7IGNoPj0nMCcgJiYgY2g8PSc5JzsgY2g9Z2V0Y2hhcigpKSBuPShuPDwzKSsobjw8MSkrY2gtNDg7XAogICAgaWYgKG5lZykgbj0tbjtcCn0pCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gSUk7CnR5cGVkZWYgcGFpcjxsbCxsbD4gTEw7CmNvbnN0IGxsIElORj0xMDAwMDAwMDAwKzc7CmNvbnN0IGRvdWJsZSBlc3A9MWUtMTM7CmNvbnN0IGRvdWJsZSBwaT0zLjE0MTU5MjY1MzU4OTsKCgpsbCBtLCBuLCBhWzEwMDFdWzEwMDFdLCBIWzEwMDFdLCBkZW1bMTAwMV0sIExbMTAwMV07CgppbnQgbWFpbigpCnsKICAgIC8vZnJlb3BlbigiQ1JFQzAxLmlucCIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJDUkVDMDEub3V0IiwgInciLCBzdGRvdXQpOwogICAgY2luPj5tPj5uOwogICAgY2hhciBjaDsKICAgIEZPUkUoaSwgMSwgbSkKICAgICAgICBGT1JFKGosIDEsIG4pIHsKICAgICAgICAgICAgY2luPj5jaDsKICAgICAgICAgICAgYVtpXVtqXSA9IGNoIC0gJzAnOwogICAgICAgIH0KICAgIG1lbXNldChILCAwLCBzaXplb2YoSCkpOwogICAgbWVtc2V0KEwsIDAsIHNpemVvZihMKSk7CiAgICBtZW1zZXQoZGVtLCAwLCBzaXplb2YoZGVtKSk7CiAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgIEZPUkUoaSwgMSwgbSkKICAgICAgICBGT1JFKGosIDEsIG4pIHsKICAgICAgICAgICAgLy9jb3V0PDxpPDwiICI8PGo8PCIgIjw8YVtpXVtqXTw8ZW5kbDsKICAgICAgICAgICAgaWYgKGFbaV1bal0gPT0gMSkgewogICAgICAgICAgICAgICAgSFtqXSsrOwogICAgICAgICAgICAgICAgaW50IGsgPSBqOwogICAgICAgICAgICAgICAgd2hpbGUgKCAoayA+IDEpICYmIChhW2ldW2stMV0gPT0gMSkgJiYgKEhbIGsgLSAxIF0gPj0gSFtqXSkgKSBrID0gTFtrIC0gMV07CiAgICAgICAgICAgICAgICBMW2pdID0gazsKICAgICAgICAgICAgICAgIGRlbVtqXSA9IEhbal0qKGogLSBMW2pdICsgMSkgKyBkZW1bTFtqXSAtIDFdOwogICAgICAgICAgICAgICAgYW5zICs9IGRlbVtqXTsKICAgICAgICAgICAgICAgIC8vY291dDw8aTw8Ij09Ijw8ajw8Ij09Ijw8Ij09Ijw8SFtqXTw8Ij09Ijw8YW5zPDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSFtqXSA9IDA7CiAgICAgICAgICAgICAgICBkZW1bal09IDA7CiAgICAgICAgICAgICAgICBMW2pdID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIGNvdXQ8PGFuczsKfQ==