#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-4;
double f[1100][1100];
double mp[1100][1100], g[1100][1100];
int n, m, X, Y;
void gauss(int row) {
  for (register int i = 1; i <= m; i++)
    for (register int j = i + 1; j <= m; j++) {
      if (mp[j][i] == 0) break;
      double temp = mp[j][i] / mp[i][i];
      for (register int k = i; k <= m; k++) {
        if (mp[j][k] == 0) break;
        mp[j][k] -= mp[i][k] * temp;
      }
      mp[j][m + 1] -= mp[i][m + 1] * temp;
    }
  for (register int i = m; i >= 1; i--) {
    double sum = 0;
    for (register int j = i + 1; j <= m; j++) {
      if (mp[i][j] > eps)
        sum += mp[i][j] * f[row][j];
      else
        break;
    }
    f[row][i] = (mp[i][m + 1] - sum) / mp[i][i];
  }
}
int main() {
  scanf("%d%d%d%d", &n, &m, &X, &Y);
  if (m != 1) {
    for (register int i = n - 1; i >= X; i--) {
      mp[1][1] = -2.0 / 3.0;
      mp[1][2] = 1.0 / 3.0;
      for (register int j = 2; j < m; j++) {
        mp[j][j] = -3.0 / 4.0;
        mp[j][j - 1] = mp[j][j + 1] = 1.0 / 4.0;
      }
      mp[m][m - 1] = 1.0 / 3.0;
      mp[m][m] = -2.0 / 3.0;
      mp[1][m + 1] = -1 - 1.0 / 3.0 * f[i + 1][1];
      mp[m][m + 1] = -1 - 1.0 / 3.0 * f[i + 1][m];
      for (int j = 2; j < m; j++) mp[j][m + 1] = -1 - 1.0 / 4.0 * f[i + 1][j];
      gauss(i);
    }
    printf("%.10lf\n", f[X][Y]);
  } else {
    for (int i = n - 1; i >= X; i--) f[i][1] = f[i + 1][1] + 2;
    printf("%.10lf\n", f[X][Y]);
  }
  return 0;
}
