#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1e6 + 100, mod = 1e9 + 7, inf = 1e17;
long long n, m, x1, x2, d, z, t, sum, y, maxi, mini, ans, ptr, x, a[100][100];
vector<long long> v, iha, jha;
map<int, map<int, map<long long, long long> > > dp;
void bt(long long x, long long y, long long z, long long h) {
  if (h == 0) {
    dp[x][y][z]++;
    return;
  }
  if (x < n) {
    bt(x + 1, y, z ^ a[x + 1][y], h - 1);
  }
  if (y < m) {
    bt(x, y + 1, z ^ a[x][y + 1], h - 1);
  }
}
void bt2(long long x, long long y, long long z, long long h) {
  if (h == 0) {
    ans += dp[x][y][d xor z];
    return;
  }
  if (x > 1) {
    bt2(x - 1, y, z ^ a[x][y], h - 1);
  }
  if (y > 1) {
    bt2(x, y - 1, z ^ a[x][y], h - 1);
  }
}
int main() {
  cin >> n >> m >> d;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> a[i][j];
    }
  }
  bt(1, 1, a[1][1], (n + m - 2) / 2);
  bt2(n, m, 0, (n + m - 2) - ((n + m - 2) / 2));
  cout << ans;
}
