#include <bits/stdc++.h>
enum { n_max = 400000 };
int A[n_max];
long long gcd(long long a, long long b) {
  while (b) {
    long long c = a % b;
    a = b;
    b = c;
  }
  return a;
}
int main() {
  long long a, b;
  int k;
  scanf("%I64d%I64d%d", &a, &b, &k);
  long long c = 0, c2 = -1, v2;
  while (b < a) {
    long long a2 = a;
    for (int i = (2); i <= (k); ++i)
      if (a2 > a - a % i && b <= a - a % i) a2 = a - a % i;
    if (a2 == a)
      if (c2 == -1) {
        c2 = c++;
        v2 = a--;
      } else {
        long long cc = (a - b) / (v2 - a);
        a -= cc * (v2 - a);
        c += cc * (c - c2);
        if (b < a) {
          c++;
          a--;
        }
      }
    else {
      a = a2;
      c++;
    }
  }
  printf("%I64d\n", c);
  return 0;
}
