#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int res = 1000000000;
int ar[110][110];
int tt[110][110];
void f(int t, int cost) {
  int i, j;
  if (cost > res) return;
  if (cost > k) return;
  if (t > n && t > m) {
    if (cost < res) res = cost;
    return;
  }
  int val;
  val = 0;
  if (t <= n) {
    tt[t][1] = 1;
    val += (tt[t][1] != ar[t][1]);
  }
  if (t <= m) {
    tt[1][t] = 0;
    val += (tt[1][t] != ar[1][t]);
  }
  for (i = 2; i <= t && i <= n && t <= m; i++) {
    tt[i][t] = (tt[i][1] xor tt[1][1]) xor tt[1][t];
    if (tt[i][t] != ar[i][t]) val++;
  }
  for (j = 2; j < t && j <= m && t <= n; j++) {
    tt[t][j] = (tt[t][1] xor tt[1][1]) xor tt[1][j];
    if (tt[t][j] != ar[t][j]) val++;
  }
  f(t + 1, cost + val);
  val = 0;
  if (t <= n) {
    tt[t][1] = 0;
    val += (tt[t][1] != ar[t][1]);
  }
  if (t <= m) {
    tt[1][t] = 1;
    val += (tt[1][t] != ar[1][t]);
  }
  for (i = 2; i <= t && i <= n && t <= m; i++) {
    tt[i][t] = (tt[i][1] xor tt[1][1]) xor tt[1][t];
    if (tt[i][t] != ar[i][t]) val++;
  }
  for (j = 2; j < t && j <= m && t <= n; j++) {
    tt[t][j] = (tt[t][1] xor tt[1][1]) xor tt[1][j];
    if (tt[t][j] != ar[t][j]) val++;
  }
  f(t + 1, cost + val);
  if (t > m || t > n) return;
  val = 0;
  if (t <= n) {
    tt[t][1] = 1;
    val += (tt[t][1] != ar[t][1]);
  }
  if (t <= m) {
    tt[1][t] = 1;
    val += (tt[1][t] != ar[1][t]);
  }
  for (i = 2; i <= t && i <= n && t <= m; i++) {
    tt[i][t] = (tt[i][1] xor tt[1][1]) xor tt[1][t];
    if (tt[i][t] != ar[i][t]) val++;
  }
  for (j = 2; j < t && j <= m && t <= n; j++) {
    tt[t][j] = (tt[t][1] xor tt[1][1]) xor tt[1][j];
    if (tt[t][j] != ar[t][j]) val++;
  }
  f(t + 1, cost + val);
  val = 0;
  if (t <= n) {
    tt[t][1] = 0;
    val += (tt[t][1] != ar[t][1]);
  }
  if (t <= m) {
    tt[1][t] = 0;
    val += (tt[1][t] != ar[1][t]);
  }
  for (i = 2; i <= t && i <= n && t <= m; i++) {
    tt[i][t] = (tt[i][1] xor tt[1][1]) xor tt[1][t];
    if (tt[i][t] != ar[i][t]) val++;
  }
  for (j = 2; j < t && j <= m && t <= n; j++) {
    tt[t][j] = (tt[t][1] xor tt[1][1]) xor tt[1][j];
    if (tt[t][j] != ar[t][j]) val++;
  }
  f(t + 1, cost + val);
}
int main() {
  scanf(" %d %d %d", &n, &m, &k);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      scanf(" %d", &ar[i][j]);
    }
  tt[1][1] = 1;
  f(2, tt[1][1] != ar[1][1]);
  tt[1][1] = 0;
  f(2, tt[1][1] != ar[1][1]);
  if (res > k)
    printf("%d\n", -1);
  else
    printf("%d\n", res);
  return 0;
}
