#include <bits/stdc++.h>
using namespace std;
const long long M = 100 + 19;
long long d[M][M][M], n, m, k;
char c;
struct tuplee {
  long long x, y, z;
};
vector<tuplee> v1, v2;
long long go(long long x1, long long y1, long long z1, long long x2,
             long long y2, long long z2) {
  if (x1 > x2 || y1 > y2 || z1 > z2 || d[x1][y1][z1] == 0) return 0;
  if (x1 == x2 && y1 == y2 && z1 == z2) return 1;
  return go(x1 + 1, y1, z1, x2, y2, z2) + go(x1, y1 + 1, z1, x2, y2, z2) +
         go(x1, y1, z1 + 1, x2, y2, z2);
}
inline bool is_bad(long long x, long long y, long long z) {
  tuplee T;
  v1.clear();
  v2.clear();
  if (d[x - 1][y][z]) T.x = x - 1, T.y = y, T.z = z, v1.push_back(T);
  if (d[x][y - 1][z]) T.x = x, T.y = y - 1, T.z = z, v1.push_back(T);
  if (d[x][y][z - 1]) T.x = x, T.y = y, T.z = z - 1, v1.push_back(T);
  if (d[x + 1][y][z]) T.x = x + 1, T.y = y, T.z = z, v2.push_back(T);
  if (d[x][y + 1][z]) T.x = x, T.y = y + 1, T.z = z, v2.push_back(T);
  if (d[x][y][z + 1]) T.x = x, T.y = y, T.z = z + 1, v2.push_back(T);
  if (v1.empty() || v2.empty()) return false;
  for (long long i = (0); i <= (v1.size() - 1); i++) {
    for (long long j = (0); j <= (v2.size() - 1); j++) {
      if (go(v1[i].x, v1[i].y, v1[i].z, v2[j].x, v2[j].y, v2[j].z) == 1)
        return true;
    }
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  scanf("%lld%lld%lld", &n, &m, &k);
  long long ct = 0;
  for (long long i1 = (1); i1 <= (n); i1++)
    for (long long i2 = (1); i2 <= (m); i2++)
      for (long long i3 = (1); i3 <= (k); i3++)
        scanf(" %c", &c), d[i1][i2][i3] = (c - '0');
  for (long long i1 = (1); i1 <= (n); i1++)
    for (long long i2 = (1); i2 <= (m); i2++)
      for (long long i3 = (1); i3 <= (k); i3++) {
        if (d[i1][i2][i3] && is_bad(i1, i2, i3)) ct++;
      }
  printf("%lld", ct);
  return 0;
}
