#include <bits/stdc++.h>
using namespace std;
const int N = 20 + 10;
int n, m;
long long k;
long long a[N][N];
map<long long, long long> ma[N][N];
long long ans;
inline void DFS1(int x, int y, long long now) {
  if (x > n || y > m) return;
  now ^= a[x][y];
  if (x + y == (n + m) / 2 + 1) {
    ma[x][y][now]++;
    return;
  }
  DFS1(x + 1, y, now);
  DFS1(x, y + 1, now);
}
inline void DFS2(int x, int y, long long now) {
  if (x < 1 || y < 1) return;
  if (x + y == (n + m) / 2 + 1) {
    ans += ma[x][y][now ^ k];
    return;
  }
  now ^= a[x][y];
  DFS2(x - 1, y, now);
  DFS2(x, y - 1, now);
}
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) cin >> a[i][j];
  ans = 0;
  DFS1(1, 1, 0);
  DFS2(n, m, 0);
  cout << ans << endl;
}
