#include <bits/stdc++.h>
using namespace std;
vector<int> V[300002];
int main() {
  int T = 1;
  while (T--) {
    int A, B, C, D, i, j, k, l, N, K, M = 0;
    int x1, x2, y1, y2, y3, y4, x3, x4;
    int x, y, z, X, Y, Z;
    int maxi1 = 0;
    priority_queue<int> qn;
    string s1;
    string s2;
    string s3 = "";
    priority_queue<pair<int, char>, vector<pair<int, char>>,
                   greater<pair<int, char>>>
        Q;
    cin >> N >> M >> A >> B;
    if (M == 1) {
      cout << 1 << endl;
      continue;
    }
    if (B == N) {
      if (N % M != 0) B += (M - N % M);
    }
    int mini = 9999999;
    if (M != 1 && A % M == (1 + B % M) % M) mini = min(mini, 2);
    if (B % M == 0) {
      if ((A - 1) % M == 0)
        mini = min(mini, 1);
      else if (B - A < M)
        mini = min(mini, 1);
      else
        mini = min(mini, 2);
    }
    if ((A - 1) % M == 0) {
      if (B - A < M)
        mini = min(mini, 1);
      else
        mini = min(mini, 2);
    }
    if (B % M != 0 && (A - 1) % M != 0) {
      x = (A / M + (A % M != 0)) * M;
      if (B <= x)
        mini = min(mini, 1);
      else if ((B - x) <= M)
        mini = min(mini, 2);
      else
        mini = min(mini, 3);
    }
    cout << mini << endl;
  }
}
