#include <iostream>
#include <string>

using namespace std;

int a[505][505],sol[505][505],parc[505][505],n,m,solt,nr;
string s;

void parcurge (int i,int j,int preci,int precj)
{

    parc[i][j]=nr;
    if (preci!=i-1 && a[i-1][j]==1)
    {
        if (parc[i-1][j]>0)
        {
            sol[i][j]=parc[i-1][j];
        }else
        {
            ++nr;
            parcurge(i-1,j,i,j);
            if (sol[i-1][j]!=0) if (sol[i-1][j]<=sol[i][j] || sol[i][j]==0) sol[i][j]=sol[i-1][j];
        }
    }
    if (precj!=j-1 && a[i][j-1]==1)
    {
        if (parc[i][j-1]>0)
        {
            sol[i][j]=parc[i][j-1];
        }else
        {
            ++nr;
            parcurge(i,j-1,i,j);
           if (sol[i][j-1]!=0) if (sol[i][j-1]<sol[i][j] || sol[i][j]==0) sol[i][j]=sol[i][j-1];
        }
    }
    if (preci!=i+1 && a[i+1][j]==1)
    {
        if (parc[i+1][j]>0)
        {
            sol[i][j]=parc[i+1][j];
        }else
        {
            ++nr;
            parcurge(i+1,j,i,j);
            if (sol[i+1][j]!=0) if (sol[i+1][j]<sol[i][j] || sol[i][j]==0) sol[i][j]=sol[i+1][j];
        }
    }
    if (precj!=j+1 && a[i][j+1]==1)
    {
        if (parc[i][j+1]>0)
        {
            sol[i][j]=parc[i][j+1];
        }else
        {
            ++nr;
            parcurge(i,j+1,i,j);
            if (sol[i][j+1]!=0) if (sol[i][j+1]<sol[i][j] || sol[i][j]==0) sol[i][j]=sol[i][j+1];
        }
    }

}

int main()
{
    cin>>n>>m;
    getline(cin,s);
    for (int i=1;i<=n;++i)
    {
        getline(cin,s);
        for (int j=1;j<=m;++j)
        {
            if (s[j-1]=='1') a[i][j]=1;
        }
    }

    for (int i=1;i<=n;++i)
    {
        for (int j=1;j<=m;++j)
        {
            if (parc[i][j]==0 && a[i][j]==1) nr=1,parcurge(i,j,0,0);
            if (sol[i][j]>0) { ++solt;}
        }
    }

    cout<<solt;

    return 0;
}