#include <bits/stdc++.h>
using namespace std;
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
int n, m;
long long k, a[25][25] = {}, ans;
unordered_map<long long, long long> mp[25];
void dfs_pre(int x, int y, long long sum) {
  if (x + y == (n + m - 2) / 2) {
    mp[x][sum]++;
    return;
  }
  for (int i = 0; i < 2; i++) {
    int X = x + dx[i], Y = y + dy[i];
    if (X >= 0 && Y >= 0 && X < n && Y < m) dfs_pre(X, Y, sum ^ a[X][Y]);
  }
}
void dfs_suf(int x, int y, long long sum) {
  if (x + y == (n + m - 2) / 2) {
    ans += mp[x][sum ^ k ^ a[x][y]];
    return;
  }
  for (int i = 2; i < 4; i++) {
    int X = x + dx[i], Y = y + dy[i];
    if (X >= 0 && Y >= 0 && X < n && Y < m) dfs_suf(X, Y, sum ^ a[X][Y]);
  }
}
int main() {
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; cin >> a[i][j], j++)
      ;
  dfs_pre(0, 0, a[0][0]);
  dfs_suf(n - 1, m - 1, a[n - 1][m - 1]);
  cout << ans << "\n";
  return 0;
}
