#include <bits/stdc++.h>
using namespace std;
double f[1005][1005], g[1005][1005];
int main() {
  int n = 0, m = 0, x = 0, y = 0;
  scanf("%d%d%d%d", &n, &m, &x, &y);
  n -= x - 1, x = 1;
  for (int i = 1; i <= m; i++) f[n][i] = 0;
  for (int i = n - 1; i >= 1; i--) {
    if (m == 1) {
      f[i][m] = 2 * ((double)1 / 2 * f[i + 1][m] + 1);
      continue;
    }
    for (int j = 1; j <= m; j++)
      if (j == 1) {
        g[j][j] = (double)2 / 3;
        g[j][j + 1] = (double)-1 / 3;
        g[j][m + 1] = (double)1 / 3 * f[i + 1][j] + 1;
      } else if (j == m) {
        g[j][j] = (double)2 / 3;
        g[j][j - 1] = (double)-1 / 3;
        g[j][m + 1] = (double)1 / 3 * f[i + 1][j] + 1;
      } else {
        g[j][j] = (double)3 / 4;
        g[j][j - 1] = (double)-1 / 4;
        g[j][j + 1] = (double)-1 / 4;
        g[j][m + 1] = (double)1 / 4 * f[i + 1][j] + 1;
      }
    for (int j = 1; j <= m - 1; j++) {
      double x = -g[j + 1][j] / g[j][j];
      g[j][j] *= x;
      if (j != 1) g[j][j - 1] *= x;
      g[j][j + 1] *= x, g[j][m + 1] *= x;
      g[j + 1][j] += g[j][j];
      g[j + 1][j + 1] += g[j][j + 1];
      g[j + 1][m + 1] += g[j][m + 1];
    }
    f[i][m] = g[m][m + 1] / g[m][m];
    for (int j = m - 1; j >= 1; j--)
      f[i][j] = (g[j][m + 1] - g[j][j + 1] * f[i][j + 1]) / g[j][j];
  }
  printf("%.4f", f[x][y]);
  return 0;
}
