#include <bits/stdc++.h>
using namespace std;
const double PI = 2.0 * acos(0.0);
inline int getInt() {
  int x;
  scanf("%d", &x);
  return x;
}
inline long long getLL() {
  long long x;
  scanf("%lld", &x);
  return x;
};
inline int NUM(char c) { return (int)c - 48; }
inline char CHR(int n) { return (char)(n + 48); }
template <class T>
inline T MAX(T a, T b) {
  if (a > b) return a;
  return b;
}
template <class T>
inline T MIN(T a, T b) {
  if (a < b) return a;
  return b;
}
inline void OPEN(string s) {
  freopen((s + ".in").c_str(), "r", stdin);
  freopen((s + ".out").c_str(), "w", stdout);
}
int TMP[500 + 5][500 + 5];
int M[500 + 5][500 + 5];
int dp[500 + 5][500 + 5];
const int mr[] = {0, 0, -1, 1};
const int mc[] = {-1, 1, 0, 0};
int nrows, ncols, K;
inline bool valid(int r, int c) {
  return r >= 0 && r < nrows && c >= 0 && c < ncols;
}
inline void initM() {
  for (int i = 0, _n = (nrows); i < _n; i++)
    for (int j = 0, _n = (ncols); j < _n; j++) {
      if (TMP[i][j] == 0) continue;
      int ctr = 0;
      for (int k = 0, _n = (4); k < _n; k++) {
        int rr = i + mr[k], cc = j + mc[k];
        if (valid(rr, cc) && TMP[rr][cc]) ctr++;
      }
      if (ctr == 4) M[i + 1][j + 1] = 1;
    }
}
inline void initDP() {
  for (int i = (1), _b = (nrows); i <= _b; i++)
    for (int j = (1), _b = (ncols); j <= _b; j++) {
      dp[i][j] = M[i][j] + dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1];
    }
}
int A[500 + 5];
char s[500 + 5];
int main() {
  scanf("%d%d%d", &nrows, &ncols, &K);
  for (int i = 0, _n = (nrows); i < _n; i++) {
    scanf("%s", s);
    for (int j = 0, _n = (ncols); j < _n; j++) {
      TMP[i][j] = (s[j] == '1');
    }
  }
  initM();
  initDP();
  long long ret = 0;
  for (int b = (1), _b = (ncols); b <= _b; b++) {
    for (int a = (1), _b = (b - 2); a <= _b; a++) {
      memset(A, 0, sizeof(A));
      for (int i = (1), _b = (nrows); i <= _b; i++) {
        A[i] = dp[i][b - 1] - dp[i][a];
      }
      int awal = 1;
      for (int i = (3), _b = (nrows); i <= _b; i++) {
        if (A[i - 1] - A[awal] < K) continue;
        while (A[i - 1] - A[awal] >= K) awal++;
        awal--;
        ret += awal;
      }
    }
  }
  cout << ret << endl;
  return 0;
}
