#include <bits/stdc++.h>
using namespace std;
int mas[500000];
int forA[500000];
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
int main() {
  long long a, b, k;
  cin >> a >> b >> k;
  long long nok = 1;
  for (int i = 2; i <= k; i++) nok = lcm(nok, i);
  mas[nok - 1] = 0;
  for (int i = 0; i < nok; i++) {
    mas[i] = nok + 1;
    forA[i] = nok + 1;
  }
  mas[nok - 1] = 0;
  forA[a % nok] = 0;
  for (int i = nok - 1; i >= 0; i--) {
    for (int x = 2; x <= k; x++) {
      mas[i - i % x] = min(mas[i - i % x], mas[i] + 1);
    }
    if (i > 0) mas[i - 1] = min(mas[i - 1], mas[i] + 1);
  }
  for (int i = a % nok; i >= 0; i--) {
    for (int x = 2; x <= k; x++) {
      forA[i - i % x] = min(forA[i - i % x], forA[i] + 1);
    }
    if (i > 0) forA[i - 1] = min(forA[i - 1], forA[i] + 1);
  }
  if (a / nok == b / nok) {
    cout << forA[b % nok] - forA[a % nok] << '\n';
    return 0;
  }
  long long per = mas[0] - mas[nok - 1];
  long long ans = 0;
  long long b2 = b - b % nok;
  if (b2 != b) {
    ans += mas[b % nok] - mas[nok - 1] + 1;
    b = b2 + nok;
  }
  long long a2 = a - a % nok;
  if (a2 != a) {
    ans += forA[0] - forA[a % nok];
    a = a2;
  }
  ans += (a / nok - b / nok) * (per + 1);
  cout << ans << '\n';
  return 0;
}
