#include <bits/stdc++.h>
using namespace std;
double dp[1010][1010];
double a[1010][1010], b[1010];
void init(int m) {
  a[0][0] = -2.0 / 3;
  a[0][1] = 1.0 / 3;
  for (int i = 1; i < m - 1; i++) {
    a[i][i - 1] = a[i][i + 1] = 1.0 / 4;
    a[i][i] = -3.0 / 4;
  }
  a[m - 1][m - 1] = -2.0 / 3;
  a[m - 1][m - 2] = 1.0 / 3;
}
void gauss(int n, int m) {
  init(m);
  for (int i = 0; i < m; i++) {
    double ret = 1.0 / a[i][i];
    a[i][i] *= ret, b[i] *= ret;
    if (i == m) break;
    a[i][i + 1] *= ret;
    ret = a[i + 1][i] / a[i][i];
    a[i + 1][i] -= ret * a[i][i], a[i + 1][i + 1] -= ret * a[i][i + 1];
    b[i + 1] -= ret * b[i];
  }
  for (int i = m - 1; i >= 0; i--) b[i] -= a[i][i + 1] * b[i + 1];
}
int main() {
  int n, m, x, y;
  cin >> n >> m >> x >> y;
  if (m == 1) {
    printf("%.10f", 2.0 * (n - x));
    return 0;
  }
  for (int i = 0; i < m; i++) dp[n - 1][i] = 0;
  x--, y--;
  for (int i = n - 2; i >= x; i--) {
    b[0] = -1 - dp[i + 1][0] / 3.0;
    for (int j = 1; j < m - 1; j++) b[j] = -1 - dp[i + 1][j] / 4.0;
    b[m - 1] = -1 - dp[i + 1][m - 1] / 3.0;
    gauss(n, m);
    for (int j = 0; j < m; j++) dp[i][j] = b[j];
  }
  printf("%.10f", dp[x][y]);
  return 0;
}
