#include <bits/stdc++.h>
using namespace std;
int n;
char s, t, b;
double calc() {
  char floar[3][3];
  floar[0][0] = 'A';
  floar[0][1] = 'B';
  floar[0][2] = 'C';
  floar[1][0] = 'D';
  floar[1][1] = 'E';
  floar[1][2] = 'F';
  floar[2][0] = 'G';
  floar[2][1] = 'H';
  floar[2][2] = 'I';
  pair<int, int> startPlace;
  pair<int, int> finPlace;
  pair<int, int> wareHouse;
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
      if (floar[i][j] == s) {
        startPlace.first = i;
        startPlace.second = j;
      } else if (floar[i][j] == t) {
        finPlace.first = i;
        finPlace.second = j;
      } else if (floar[i][j] == b) {
        wareHouse.first = i;
        wareHouse.second = j;
      }
    }
  }
  vector<pair<int, int> > placeList;
  vector<pair<int, int> > nextPlaceList;
  placeList.push_back(startPlace);
  int leaveBattery = n;
  pair<int, int> newPlace;
  int trueCount = 0;
  int falseCount = 0;
  int placeCount[3][3];
  int nextPlaceCount[3][3];
  for (int i = 0; i < 3; i++) {
    fill(placeCount[i], placeCount[i] + 3, 0);
    fill(nextPlaceCount[i], nextPlaceCount[i] + 3, 0);
  }
  placeCount[startPlace.first][startPlace.second] = 1;
  while (leaveBattery) {
    if (leaveBattery == 1) {
      for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
          falseCount += placeCount[i][j];
        }
      }
      falseCount = falseCount * 4;
    }
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
        if (placeCount[i][j] >= 1) {
          if (i - 1 >= 0 &&
              !(i - 1 == wareHouse.first && j == wareHouse.second)) {
            nextPlaceCount[i - 1][j] += placeCount[i][j];
          } else
            nextPlaceCount[i][j]++;
          if (i + 1 < 3 && !(i + 1 == wareHouse.first && j == wareHouse.second))
            nextPlaceCount[i + 1][j] += placeCount[i][j];
          else
            nextPlaceCount[i][j]++;
          if (j - 1 >= 0 &&
              !(i == wareHouse.first && j - 1 == wareHouse.second))
            nextPlaceCount[i][j - 1] += placeCount[i][j];
          else
            nextPlaceCount[i][j]++;
          if (j + 1 < 3 && !(i == wareHouse.first && j + 1 == wareHouse.second))
            nextPlaceCount[i][j + 1] += placeCount[i][j];
          else
            nextPlaceCount[i][j]++;
        }
      }
    }
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
        placeCount[i][j] = nextPlaceCount[i][j];
        nextPlaceCount[i][j] = 0;
      }
    }
    leaveBattery--;
  }
  trueCount = placeCount[finPlace.first][finPlace.second];
  return (double)trueCount / falseCount;
}
void solve() {
  while (1) {
    cin >> n;
    if (n == 0) break;
    cin >> s;
    cin >> t;
    cin >> b;
    cout << calc() << endl;
  }
}
int main() {
  solve();
  return 0;
}
