#include <bits/stdc++.h>
using namespace std;
const int N = 22;
int mid, n, m, K;
long long a[N][N];
inline void init() {
  scanf("%d%d%I64d", &n, &m, &K);
  mid = (n + m) / 2 + 1;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      scanf("%I64d", &a[i][j]);
    }
  }
}
map<long long, long long> mp[N];
bool vis[N][N];
void dfs1(int x, int y, long long now) {
  if (x > n || y > m) return;
  now ^= a[x][y];
  if ((x + y) == mid) {
    mp[x][now]++;
    return;
  }
  dfs1(x + 1, y, now);
  dfs1(x, y + 1, now);
}
long long ans;
void dfs2(int x, int y, long long now) {
  if (x < 1 || y < 1) return;
  if ((x + y) == mid) {
    ans += mp[x][now];
    return;
  }
  now ^= a[x][y];
  dfs2(x - 1, y, now);
  dfs2(x, y - 1, now);
}
inline void solve() {
  dfs1(1, 1, 0);
  dfs2(n, m, K);
  printf("%I64d\n", ans);
}
int main() {
  init();
  solve();
  return 0;
}
