#include <bits/stdc++.h>
using namespace std;
const int MAXL = 360361;
int gcd(int x, int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
long long a, b, k, l, dpz[MAXL], dpb[MAXL], la, lb, sol;
int main() {
  cin >> a >> b >> k;
  l = 1;
  for (int i = 2; i <= k; i++) l *= i / gcd(l, i);
  for (int i = 1; i <= l; i++) {
    dpz[i] = 1 + dpz[i - 1];
    for (int j = 2; j <= k; j++) dpz[i] = min(dpz[i], 1 + dpz[i - i % j]);
  }
  for (int i = b % l + 1; i <= l; i++) {
    dpb[i] = 1 + dpb[i - 1];
    for (int j = 2; j <= k; j++)
      if (i - i % j >= b % l) dpb[i] = min(dpb[i], 1 + dpb[i - i % j]);
  }
  if (b % l == 0) dpb[l] = 0;
  la = a - a % l;
  lb = b + (l - b % l) % l;
  if (la < lb)
    sol = dpb[a % l];
  else
    sol = dpb[l] + dpz[l] * ((la - lb) / l) + dpz[a % l];
  cout << sol << endl;
}
