#include <bits/stdc++.h>
using namespace std;
int arrT[2 * 360360 + 100];
int *dp;
int main() {
  long long int a, b, k;
  cin >> b >> a >> k;
  dp = arrT - a;
  for (int i = 0; i < 2 * 360360 + 100; i++) dp[a + i] = 3 * 360360;
  dp[a] = 0;
  long long int st = -1;
  for (int i = 0; i <= 2 * 360360 + 10; i++) {
    if (st == -1 && (a + i) % 360360 == 0) st = a + i;
    dp[a + i + 1] = min(dp[a + i + 1], dp[a + i] + 1);
    for (int j = 2; j <= k; j++)
      if ((a + i) % j == 0)
        for (int l = 1; l < j; l++)
          dp[a + i + l] = min(dp[a + i + l], dp[a + i] + 1);
  }
  if (b - a <= 2 * 360360) {
    cout << dp[b] << endl;
    return 0;
  }
  long long int inc = ((b - st) / 360360) * (dp[st + 360360] - dp[st]);
  b -= 360360 * ((b - st) / 360360);
  cout << dp[b] + inc << endl;
  return 0;
}
