#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const int INF = 0x3f3f3f3f;
const double eps = 1e-8;
const double EULER = 0.577215664901532860;
const double PI = 3.1415926535897932384626;
const double E = 2.71828182845904523536028;
long long pow_mod(long long a, long long n, long long m) {
  if (n == 0) return 1;
  long long x = pow_mod(a, n >> 1, m);
  long long ans = x * x % m;
  if (n & 1) ans = ans * a % m;
  return ans;
}
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
int main() {
  long long n, m, a, b;
  cin >> n >> m >> a >> b;
  long long rowa = a / m + (a % m != 0), rowb = b / m + (b % m != 0);
  if (m == 1) {
    cout << "1" << endl;
    return 0;
  }
  if (b == n) {
    if (a % m == 1 || rowa == rowb) {
      cout << "1" << endl;
    } else
      cout << "2" << endl;
    return 0;
  }
  if (rowa == rowb)
    cout << "1" << endl;
  else {
    if ((a % m == 1 && b % m == 0)) {
      cout << "1" << endl;
    } else {
      if (b % m == 0 || a % m == 1) {
        cout << "2" << endl;
      } else {
        if (rowb - rowa == 1 || (a % m == (b + 1) % m)) {
          cout << "2" << endl;
        } else {
          cout << "3" << endl;
        }
      }
    }
  }
  return 0;
}
