#include <bits/stdc++.h>
long long a[1000000];
long long i, j, aa, bb, k;
using namespace std;
int main() {
  scanf("%I64d%I64d%I64d", &aa, &bb, &k);
  memset(a, 0x3f, sizeof a);
  a[360360 + aa % 360360] = 0;
  for (i = 360360 + aa % 360360; i; i--) {
    a[i - 1] = min(a[i - 1], a[i] + 1);
    for (j = 2; j <= k; j++)
      if (i % j) a[i - i % j] = min(a[i] + 1, a[i - i % j]);
  }
  long long ans;
  if ((aa / 360360 == bb / 360360))
    ans = a[bb % 360360 + 360360] - a[aa % 360360 + 360360];
  else
    ans = ((aa / 360360 - bb / 360360 - 1) * (a[1] - a[360361])) +
          a[(bb % 360360)] - a[aa % 360360 + 360360];
  printf("%I64d", ans);
}
