#include <bits/stdc++.h>
using namespace std;
long long ans;
map<long long, int> mp[30][30];
int n, m;
long long k;
long long a[30][30];
void dfs(int x, int y, int t, long long now) {
  if (t == 0) {
    mp[x][y][now]++;
    return;
  }
  if (x + 1 <= n) dfs(x + 1, y, t - 1, now ^ a[x][y]);
  if (y + 1 <= m) dfs(x, y + 1, t - 1, now ^ a[x][y]);
}
void dfs1(int x, int y, int t, long long now) {
  if (t == 0) {
    ans += mp[x][y][now];
    return;
  }
  if (x - 1 > 0) dfs1(x - 1, y, t - 1, now ^ a[x - 1][y]);
  if (y - 1 > 0) dfs1(x, y - 1, t - 1, now ^ a[x][y - 1]);
}
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]);
    }
  }
  int t = n + m - 2;
  dfs(1, 1, t / 2, 0);
  dfs1(n, m, t - t / 2, k ^ a[n][m]);
  printf("%lld", ans);
  return 0;
}
