#include <bits/stdc++.h>
using namespace std;
const double pi = acos(0.0) * 2.0;
const double eps = 1e-12;
const int step[8][2] = {{1, 0}, {-1, 0}, {0, 1},  {0, -1},
                        {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
template <class T>
inline T abs1(T a) {
  return a < 0 ? -a : a;
}
template <class T>
inline T max1(T a, T b, T c = -1234567, T d = -1234567) {
  T ans = a > b ? a : b;
  if (c != -1234567) ans = max1(ans, c);
  if (d != -1234567) ans = max1(ans, d);
  return ans;
}
template <class T>
inline T min1(T a, T b, T c = -1234567, T d = -1234567) {
  T ans = a < b ? a : b;
  if (c != -1234567) ans = min(ans, c);
  if (d != -1234567) ans = min(ans, d);
  return ans;
}
template <class T>
inline T gcd1(T a, T b) {
  if (a < b) swap(a, b);
  if (a % b == 0) return b;
  return gcd1(b, a % b);
}
template <class T>
inline T lb(T num) {
  return num & (-num);
}
inline int jud(double a, double b) {
  if (abs(a) < eps && abs(b) < eps)
    return 0;
  else if (abs1(a - b) / abs1(a) < eps)
    return 0;
  if (a < b) return -1;
  return 1;
}
template <typename t>
inline int jud(t a, t b) {
  if (a < b) return -1;
  if (a == b) return 0;
  return 1;
}
template <typename it, typename t1>
inline int find(t1 val, it a, int na, bool f_small = 1, bool f_lb = 1) {
  int be = 0, en = na - 1;
  if (*a <= *(a + na - 1)) {
    if (f_lb == 0)
      while (be < en) {
        int mid = (be + en + 1) / 2;
        if (jud(*(a + mid), val) != 1)
          be = mid;
        else
          en = mid - 1;
      }
    else
      while (be < en) {
        int mid = (be + en) / 2;
        if (jud(*(a + mid), val) != -1)
          en = mid;
        else
          be = mid + 1;
      }
    if (f_small && jud(*(a + be), val) == 1) be--;
    if (!f_small && jud(*(a + be), val) == -1) be++;
  } else {
    if (f_lb)
      while (be < en) {
        int mid = (be + en + 1) / 2;
        if (jud(*(a + mid), val) != -1)
          be = mid;
        else
          en = mid - 1;
      }
    else
      while (be < en) {
        int mid = (be + en) / 2;
        if (jud(*(a + mid), val) != 1)
          en = mid;
        else
          be = mid + 1;
      }
    if (!f_small && jud(*(a + be), val) == -1) be--;
    if (f_small && jud(*(a + be), val) == 1) be++;
  }
  return be;
}
inline int bitnum(unsigned long long nValue) {
  nValue = ((0xaaaaaaaaaaaaaaaaull & nValue) >> 1) +
           (0x5555555555555555ull & nValue);
  nValue = ((0xccccccccccccccccull & nValue) >> 2) +
           (0x3333333333333333ull & nValue);
  nValue = ((0xf0f0f0f0f0f0f0f0ull & nValue) >> 4) +
           (0x0f0f0f0f0f0f0f0full & nValue);
  nValue = ((0xff00ff00ff00ff00ull & nValue) >> 8) +
           (0x00ff00ff00ff00ffull & nValue);
  nValue = ((0xffff0000ffff0000ull & nValue) >> 16) +
           (0x0000ffff0000ffffull & nValue);
  nValue = ((0xffffffff00000000ull & nValue) >> 32) +
           (0x00000000ffffffffull & nValue);
  return nValue;
}
long long pow(long long n, long long m, long long mod = 0) {
  long long ans = 1;
  long long k = n;
  while (m) {
    if (m & 1) {
      ans *= k;
      if (mod) ans %= mod;
    }
    k *= k;
    if (mod) k %= mod;
    m >>= 1;
  }
  return ans;
}
const int maxn = 31300;
long double jie[32][maxn];
long double dp[maxn][32], p[maxn][32];
long double prep[32][32], pree[32][32];
int n, h;
int main() {
  ios_base::sync_with_stdio(0);
  jie[0][0] = 1;
  jie[0][1] = 0.5;
  for (int i = 1; i <= 30; i++) {
    jie[i][0] = 1;
    jie[i][1] = 1 - (1 - jie[i - 1][1]) * 0.5;
  }
  for (int i = 0; i <= 30; i++)
    for (int j = 2; j < maxn; j++) {
      jie[i][j] = jie[i][j - 1] * jie[i][1];
    }
  string str;
  cin >> str >> n >> h;
  if (str == "Alice") {
    long double ans = 0;
    for (int i = 1; i < n; i++) {
      for (int j = 0; j < h; j++) {
        long double bef = 0.0;
        for (int t = 0; t <= j; t++) {
          long double p = jie[t][i];
          ans += (p - bef) * (1 << t) * (1 - jie[j][1]);
          bef = p;
        }
        ans += (1 - bef) * jie[j][n - i - 1] * (1 << j) * (1 - jie[j][1]);
      }
      long double bef = 0.0;
      for (int t = 0; t <= h; t++) {
        long double p = jie[t][i];
        ans += (p - bef) * (1 << t) * (1 - jie[h - 1][1]);
        bef = p;
      }
      ans += (1 - bef) * (1 << h) * (1 - jie[h - 1][1]);
    }
    cout << fixed << setprecision(15) << ans + 1 << endl;
  } else {
    cout << n << endl;
    return 0;
    if (h == 0) {
      cout << n << endl;
      return 0;
    }
    for (int i = 0; i <= h; i++)
      for (int j = 0; j <= h; j++) {
        if (j == 0 || i == 0) {
          prep[i][j] = (1 - jie[j][1]);
          pree[i][j] = 1;
        } else {
          long double p1 = (1 - jie[j][1]);
          if (j == h) p1 *= 2;
          prep[i][j] = p1 / (1.0 - jie[min(j, i) - 1][1]);
          pree[i][j] = 1.0 / (1.0 - jie[min(j, i) - 1][1]);
        }
      }
    for (int j = 0; j <= h; j++) dp[1][j] = p[1][j] = (1 - jie[j][1]) * 1e300;
    p[1][h] *= 2, dp[1][h] *= 2;
    for (int i = 1; i <= n; i++) {
      for (int j = 0; j <= h; j++) dp[i][j] /= p[i][j];
      for (int j = 0; j <= h; j++) {
        for (int t = 0; t <= h; t++) {
          int real = min(t, j);
          if (i + 1 << real > n) break;
          dp[i + 1 << real][t] +=
              (dp[i][j] + pree[j][t]) * p[i][j] * prep[j][t];
          p[i + 1 << real][t] += p[i][j] * prep[j][t];
        }
      }
    }
    long double ans = 0, pp = 0;
    for (int j = 0; j <= h; j++) pp += p[n][j], ans += dp[n][j] * p[n][j];
    ans /= pp;
    cout << fixed << setprecision(15) << ans << endl;
  }
  return 0;
}
