#include <bits/stdc++.h>
using namespace std;
long long dp1[360360 + 1];
long long dp2[360360 + 1];
long long a, b, k;
int main() {
  scanf("%I64d %I64d %I64d", &a, &b, &k);
  dp1[0] = 0;
  for (int i = 1; i <= 360360; i++) {
    dp1[i] = dp1[i - 1] + 1;
    for (int j = 2; j <= k; j++) {
      int mod = i % j;
      dp1[i] = min(dp1[i], dp1[i - mod] + 1);
    }
  }
  long long m = b % 360360;
  dp2[0] = 0;
  for (int i = 1; i <= 360360; i++) {
    dp2[i] = dp2[i - 1] + 1;
    for (int j = 2; j <= k; j++) {
      int mod = (i + m) % j;
      if (mod > i) continue;
      dp2[i] = min(dp2[i], dp2[i - mod] + 1);
    }
  }
  if (a / 360360 == b / 360360) {
    printf("%I64d\n", dp2[a - b]);
  } else {
    long long hi = a - a % 360360;
    long long lo = b - b % 360360 + 360360;
    printf("%I64d\n",
           dp1[a - hi] + dp2[lo - b] + (hi - lo) / 360360 * dp1[360360]);
  }
}
