#include <bits/stdc++.h>
bool isPrime(int n) {
  if (n <= 1)
    return false;
  else if (n <= 3)
    return true;
  else if ((n % 2 == 0) || (n % 3 == 0))
    return false;
  int i = 5;
  while (i * i <= n) {
    if ((n % i == 0) || (n % (i + 2) == 0)) return false;
    i += 6;
  }
  return true;
}
int gcd(int a, int b) {
  if (a == b) return a;
  if (a > b) return gcd(a - b, b);
  return gcd(a, b - a);
}
int lcm(int a, int b) { return (a * b) / gcd(a, b); }
using namespace std;
int lis(vector<int> arr, int n) {
  int *lis, i, j, max = 0;
  lis = (int *)malloc(sizeof(int) * n);
  for (i = 0; i < n; i++) lis[i] = 1;
  for (i = 1; i < n; i++)
    for (j = 0; j < i; j++)
      if (arr[i] > arr[j] && lis[i] < lis[j] + 1) lis[i] = lis[j] + 1;
  for (i = 0; i < n; i++) {
    if (max < lis[i]) max = lis[i];
  }
  return max;
}
long long n, k, a[100005], ans = 0;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> k;
  for (int i = 0; i < (n); ++i) cin >> a[i];
  sort(a, a + n);
  for (int i = 0; i < (n); ++i) {
    if ((a[i] - a[0]) % k) {
      cout << "-1";
      return 0;
    }
    ans += ((a[i] - a[0]) / k);
  }
  cout << ans;
  return 0;
}
