#include <bits/stdc++.h>
using namespace std;
vector<vector<vector<bool> > > g;
bool check(int x, int y, int z) {
  if (g[x - 1][y][z] && g[x + 1][y][z]) {
    return true;
  }
  if (g[x][y - 1][z] && g[x][y + 1][z]) {
    return true;
  }
  if (g[x][y][z - 1] && g[x][y][z + 1]) {
    return true;
  }
  if (g[x - 1][y][z] && g[x][y + 1][z] && !g[x - 1][y + 1][z]) {
    return true;
  }
  if (g[x - 1][y][z] && g[x][y][z + 1] && !g[x - 1][y][z + 1]) {
    return true;
  }
  if (g[x][y - 1][z] && g[x + 1][y][z] && !g[x + 1][y - 1][z]) {
    return true;
  }
  if (g[x][y - 1][z] && g[x][y][z + 1] && !g[x][y - 1][z + 1]) {
    return true;
  }
  if (g[x][y][z - 1] && g[x + 1][y][z] && !g[x + 1][y][z - 1]) {
    return true;
  }
  if (g[x][y][z - 1] && g[x][y + 1][z] && !g[x][y + 1][z - 1]) {
    return true;
  }
  return false;
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  string s;
  vector<bool> wall1(k + 2);
  vector<vector<bool> > wall2(m + 2);
  for (int i = 0; i < k + 2; i++) {
    wall1[i] = false;
  }
  for (int i = 0; i < m + 2; i++) {
    wall2[i] = wall1;
  }
  getline(cin, s);
  g.resize(n + 2);
  g[0] = wall2;
  g[n + 1] = wall2;
  for (int i = 1; i < n + 1; i++) {
    g[i].resize(m + 2);
    g[i][0] = wall1;
    g[i][m + 1] = wall1;
    for (int j = 1; j < m + 1; j++) {
      getline(cin, s);
      g[i][j].push_back(0);
      for (int l = 0; l < k; l++) {
        if (s[l] == '0') {
          g[i][j].push_back(false);
        } else {
          g[i][j].push_back(true);
        }
      }
      g[i][j].push_back(0);
    }
    getline(cin, s);
  }
  long long ans = 0;
  for (int i = 1; i < n + 1; i++) {
    for (int j = 1; j < m + 1; j++) {
      for (int l = 1; l < k + 1; l++) {
        if (g[i][j][l] && check(i, j, l)) {
          ans++;
        }
      }
    }
  }
  cout << ans;
}
