#include <bits/stdc++.h>
const int MAXN = 22;
const int MOD = 1e9 + 7;
using namespace std;
map<long long int, long long int> mm[MAXN][MAXN];
long long int a[MAXN][MAXN];
long long int n, m, k;
long long int moves;
long long int first;
long long int second;
long long int ans;
void goDown(int i, int j, int curMoves, long long int xorValue) {
  xorValue ^= a[i][j];
  if (curMoves == (first)) {
    mm[i][j][xorValue]++;
    return;
  }
  if (i + 1 <= n) {
    goDown(i + 1, j, curMoves + 1, xorValue);
  }
  if (j + 1 <= m) {
    goDown(i, j + 1, curMoves + 1, xorValue);
  }
}
void goUp(int i, int j, int curMoves, long long int xorValue) {
  if (curMoves == second) {
    ans = ans + mm[i][j][xorValue ^ k];
    return;
  }
  if (i - 1 >= 1) {
    goUp(i - 1, j, curMoves + 1, xorValue ^ a[i][j]);
  }
  if (j - 1 >= 1) {
    goUp(i, j - 1, curMoves + 1, xorValue ^ a[i][j]);
  }
}
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> a[i][j];
      mm[i][j].clear();
    }
  }
  moves = n + m - 2;
  first = moves / 2;
  second = moves - first;
  goDown(1, 1, 0, 0);
  goUp(n, m, 0, 0);
  cout << ans << endl;
}
