#include <bits/stdc++.h>
using namespace std;
int n, m;
long long k;
int diy1[2][2] = {{1, 0}, {0, 1}};
int diy2[2][2] = {{-1, 0}, {0, -1}};
long long a[25][25];
set<long long> s[25][25];
map<long long, int> M[25][25];
long long ans = 0;
void dfs1(int x, int y, long long sum) {
  sum ^= a[x][y];
  if (x + y == n + 1) {
    s[x][y].insert(sum);
    M[x][y][sum]++;
    return;
  }
  for (int i = 0; i <= 1; i++) {
    if (x + diy1[i][0] <= n && y + diy1[i][1] <= m) {
      dfs1(x + diy1[i][0], y + diy1[i][1], sum);
    }
  }
}
void dfs2(int x, int y, long long sum) {
  if (x + y == n + 1) {
    if (s[x][y].find(k ^ sum) != s[x][y].end()) {
      ans += M[x][y][k ^ sum];
    }
    return;
  }
  sum ^= a[x][y];
  for (int i = 0; i <= 1; i++) {
    if (x + diy2[i][0] >= 1 && y + diy2[i][1] >= 1) {
      dfs2(x + diy2[i][0], y + diy2[i][1], sum);
    }
  }
}
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]);
    }
  }
  dfs1(1, 1, 0);
  dfs2(n, m, 0);
  printf("%lld\n", ans);
}
