#include <bits/stdc++.h>
using namespace std;
long long ma[22][22], cnt;
int n, m;
long long k;
map<long long, long long> ans[25][25];
int max(int x, int y) {
  if (x > y) return x;
  return y;
}
void dfs(int x, int y, int ma1, long long an) {
  if (ma1 == 1) ++ma1;
  if (x + y == ma1) {
    ans[x][y][an ^ ma[x][y]]++;
    return;
  }
  if (x < n) dfs(x + 1, y, ma1, an ^ ma[x][y]);
  if (y < m) dfs(x, y + 1, ma1, an ^ ma[x][y]);
}
void adfs(int x, int y, int ma1, long long an) {
  if (ma1 == 1) ++ma1;
  if (x + y == ma1) {
    cnt += ans[x][y][an];
    return;
  }
  if (x > 1) adfs(x - 1, y, ma1, an ^ ma[x][y]);
  if (y > 1) adfs(x, y - 1, ma1, an ^ ma[x][y]);
}
int main() {
  int i, j;
  scanf("%d%d%I64d", &n, &m, &k);
  for (i = 1; i <= n; ++i)
    for (j = 1; j <= m; ++j) scanf("%I64d", &ma[i][j]);
  dfs(1, 1, max(n, m), 0);
  adfs(n, m, max(n, m), k);
  printf("%I64d", cnt);
  return 0;
}
