#include <bits/stdc++.h>
using namespace std;
const long long int mxsize = 5e5 + 15;
const long long int linf = 1e16;
long long int pow(long long int x, long long int n) {
  if (n == 0) return 1ll;
  long long int temp;
  temp = pow(x, n / 2);
  if (n % 2 == 0)
    return temp * temp;
  else
    return x * temp * temp;
}
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int sum_digit(int val) {
  if (val < 0) return -1;
  if (val == 0) return 0;
  int ans = 0;
  while (val > 0) {
    ans = ans + val % 10;
    val = val / 10;
  }
  return ans;
}
long long int count_div(long long int l, long long int r, long long int val) {
  if (l % val == 0)
    return (((r / val) - (l / val)) + 1);
  else
    return ((r / val) - (l / val));
}
int powmod(int x, int y, int m) {
  int res = 1;
  while (y > 0) {
    if (y & 1) res = (res * x) % m;
    cout << res << endl;
    y = y / 2;
    cout << x << endl;
    x = (x * x) % m;
  }
  return res;
}
int main() {
  int n, m, d;
  cin >> n >> m >> d;
  int len = n * m;
  int arr[len];
  for (int i = 0; i < len; i++) cin >> arr[i];
  sort(arr, arr + len);
  for (int i = 1; i < len; i++) {
    if (arr[i] % d != arr[i - 1] % d) {
      cout << -1 << endl;
      return 0;
    }
  }
  int ans = 0;
  for (int i = 0; i < len; i++) {
    ans = ans + abs(arr[i] - arr[len >> 1]);
  }
  cout << ans / d << endl;
  return 0;
}
