#include <bits/stdc++.h>
using namespace std;
const int maxn = 25;
long long a[maxn][maxn];
map<long long, long long> mp[maxn];
long long ans = 0;
int n, m;
long long k;
void prdfs(int x, int y, long long sum) {
  if ((x + y) == (n + m + 2) / 2) {
    mp[x][sum]++;
    return;
  }
  if (x < n) prdfs(x + 1, y, sum ^ a[x + 1][y]);
  if (y < m) prdfs(x, y + 1, sum ^ a[x][y + 1]);
  return;
}
void sudfs(int x, int y, long long sum) {
  if ((x + y) == (n + m + 2) / 2) {
    if (mp[x].find(sum ^ k ^ a[x][y]) != mp[x].end())
      ans += mp[x][sum ^ k ^ a[x][y]];
    return;
  }
  if (x > 1) sudfs(x - 1, y, sum ^ a[x - 1][y]);
  if (y > 1) sudfs(x, y - 1, sum ^ a[x][y - 1]);
  return;
}
int main() {
  scanf("%d%d%lld", &n, &m, &k);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      scanf("%lld", &a[i][j]);
    }
  prdfs(1, 1, a[1][1]);
  sudfs(n, m, a[n][m]);
  printf("%lld\n", ans);
}
