#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
double a[maxn][maxn], res[maxn], ans[maxn][maxn];
int N, M, X, Y;
void Guass() {
  for (int R = N - 1; R >= X; R--) {
    for (int i = 1; i <= M; i++) res[i] = ans[R + 1][i];
    a[1][1] = a[M][M] = -2.0 / 3.0;
    a[1][2] = a[M][M - 1] = 1.0 / 3.0;
    res[1] = -ans[R + 1][1] / 3.0 - 1;
    res[M] = -ans[R + 1][M] / 3.0 - 1;
    for (int i = 2; i <= M - 1; i++) {
      a[i][i - 1] = a[i][i + 1] = 1.0 / 4.0;
      a[i][i] = -3.0 / 4.0;
      res[i] = -ans[R + 1][i] / 4.0 - 1;
    }
    for (int i = 1; i <= M - 1; i++) {
      double t = a[i + 1][i] / a[i][i];
      a[i + 1][i] -= t * a[i][i];
      a[i + 1][i + 1] -= t * a[i][i + 1];
      a[i + 1][i + 2] -= t * a[i][i + 2];
      res[i + 1] -= t * res[i];
    }
    ans[R][M] = res[M] / a[M][M];
    for (int i = M - 1; i >= 1; i--) {
      ans[R][i] = (res[i] - a[i][i + 1] * ans[R][i + 1]) / a[i][i];
    }
  }
}
int main() {
  scanf("%d%d%d%d", &N, &M, &X, &Y);
  if (M == 1) {
    printf("%.10lf\n", 2.0 * (N - X));
    return 0;
  }
  Guass();
  printf("%.10lf\n", ans[X][Y]);
  return 0;
}
