#include <bits/stdc++.h>
using namespace std;
int n, m, endbeata, endkiczak;
map<long long, long long> karol;
long long ksor, wynik;
long long tab[30][30];
void kiczak(int x, int y, int ex, int ey, long long ksorek) {
  ksorek ^= tab[x][y];
  if (ex == x && y == ey) {
    karol[ksorek]++;
    return;
  }
  if (x != ex) kiczak(x + 1, y, ex, ey, ksorek);
  if (ey != y) kiczak(x, y + 1, ex, ey, ksorek);
}
void beata(int x, int y, int ex, int ey, long long ksorek) {
  ksorek ^= tab[x][y];
  if (ex == x && y == ey) {
    wynik += karol[ksor ^ ksorek];
    return;
  }
  if (x != ex) beata(x + 1, y, ex, ey, ksorek);
  if (ey != y) beata(x, y + 1, ex, ey, ksorek);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> ksor;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) cin >> tab[i][j];
  if (n == 1 && m == 1) {
    cout << (tab[1][1] == ksor) ? 1 : 0;
    return 0;
  }
  if (m == 1) {
    long long ks = ksor;
    for (int i = 1; i <= n; i++) ks ^= tab[i][1];
    cout << (ks == 0) ? 1 : 0;
    return 0;
  }
  for (int i = 1; i <= n && m - i >= 1; i++) {
    int a = i;
    int b = m - i;
    kiczak(1, 1, a, b, 0);
    beata(a, b, n, m, tab[a][b]);
    karol.clear();
  }
  cout << wynik;
  return 0;
}
