func_code_string: #include <bits/stdc++.h>   using namespace std;   int ed;   int l[360360 + 1], qd[8405400 + 1], qn[8405400 + 1];   int q[360360 + 1];   void bd(int first, int second) {     qd[++ed] = second;     qn[ed] = l[first];     l[first] = ed;   }   inline void bfs(int st, long long v[]) {     for (int i = (0); i < (360360 + 1); ++i) v[i] = -1;     v[st] = 0;     q[0] = st;     for (int i = 0, j = 0; i <= j; i++) {       for (int k = (l[q[i]]); k; k = qn[k])         if (v[qd[k]] == -1) {           v[qd[k]] = v[q[i]] + 1;           q[++j] = qd[k];         }     }   }   int main(int argc, char **argv) {     long long A, B, K;     cin >> A >> B >> K;     for (int i = (0); i < (360360 + 1); ++i) {       if (i) bd(i, i - 1);       for (int j = (2); j < (K + 1); ++j) bd(i, i - (i % j));     }     long long s[360360 + 1], t[360360 + 1];     bfs(A % 360360, s);     bfs(360360, t);     if (A / 360360 == B / 360360)       cout << s[B % 360360];     else       cout << (s[0] + t[0] * (A / 360360 - B / 360360 - 1) + t[B % 360360]);     return 0;   }   