#include <bits/stdc++.h>
using namespace std;
int v[100][100];
int buf[100][100];
int n, m, d;
bool func() {
  int val = buf[0][0];
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      if (buf[i][j] != val) {
        return false;
      }
    }
  }
  return true;
}
int main() {
  cin >> m >> n >> d;
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      cin >> v[i][j];
    }
  }
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      buf[i][j] = v[i][j] % d;
    }
  }
  if (!func()) {
    cout << -1;
    return 0;
  }
  vector<int> vec(n * m + 1);
  int k = 1;
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      vec[k++] = v[i][j];
    }
  }
  sort(vec.begin(), vec.end());
  int temp = vec[(n * m / 2) + 1];
  int ans = 0;
  for (int i = 1; i <= n * m; i++) {
    ans += abs(vec[i] - temp);
  }
  cout << ans / d;
  return 0;
}
