#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005;
double a[maxn], b[maxn], c[maxn], v[maxn];
double d[maxn], x[maxn];
void solveMatrix(int n, double *a, double *b, double *c, double *v, double *x) {
  int i;
  for (i = 1; i < n; i++) {
    double m = a[i] / b[i - 1];
    b[i] = b[i] - m * c[i - 1];
    v[i] = v[i] - m * v[i - 1];
  }
  x[n - 1] = v[n - 1] / b[n - 1];
  for (i = n - 2; i >= 0; --i) x[i] = (v[i] - c[i] * x[i + 1]) / b[i];
}
int main() {
  int N, M;
  int X, Y;
  int i, j;
  while (scanf("%d%d", &N, &M) != EOF) {
    scanf("%d%d", &X, &Y);
    memset(x, 0, sizeof(x));
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    memset(c, 0, sizeof(c));
    for (i = N - 1; i >= X; i--) {
      for (j = 0; j < M; j++) {
        double cnt = 2;
        if (j > 0) cnt++;
        if (j < M - 1) cnt++;
        if (j > 0) a[j] = -1 / cnt;
        if (j < M - 1) c[j] = -1 / cnt;
        b[j] = 1 - 1.0 / cnt;
        d[j] = 1 + x[j] / cnt;
      }
      solveMatrix(M, a, b, c, d, x);
    }
    printf("%lf\n", x[Y - 1]);
  }
  return 0;
}
