#include <bits/stdc++.h>
using namespace std;
const int maxn = 20;
const int maxm = 20;
int n, m;
long long k;
long long a[maxn][maxm];
map<long long, long long> f[maxn][maxm];
int z;
void calc0(int i, int j, long long s) {
  if (i + j == z) {
    f[i][j][s]++;
    return;
  }
  if (i + 1 < n) {
    calc0(i + 1, j, s ^ a[i + 1][j]);
  }
  if (j + 1 < m) {
    calc0(i, j + 1, s ^ a[i][j + 1]);
  }
}
long long ans;
void calc1(int i, int j, long long s) {
  if (i + j == z) {
    ans += f[i][j][s];
    return;
  }
  if (i - 1 >= 0) {
    calc1(i - 1, j, s ^ a[i][j]);
  }
  if (j - 1 >= 0) {
    calc1(i, j - 1, s ^ a[i][j]);
  }
}
int main() {
  scanf("%d%d%I64d", &n, &m, &k);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      scanf("%I64d", a[i] + j);
    }
  }
  z = (m - 1 + n - 1) / 2;
  calc0(0, 0, a[0][0]);
  calc1(n - 1, m - 1, k);
  printf("%I64d\n", ans);
  return 0;
}
