#include <iostream>
#include <vector>
#include <cmath>
#include <stdio.h>
using namespace std;

typedef long long int ll;

int patterns[2][10];
int s, t, b;

void getMovablePoints(int* ret, int s) {
	//up
	ret[0] = s - 3;
	//right
	ret[1] = s + 1;
	if(ret[1] % 3== 0)
		ret[1] = s;
	//down
	ret[2] = s + 3;
	//left
	ret[3] = s - 1;
	if(s % 3 == 0)
		ret[3] = s;
	for (int i = 0; i < 4; i++) {
		if(ret[i] < 0 || 8 < ret[i] || ret[i] == b)
			ret[i] = s;
	}
}

int main() {
	int n;
	while(cin >> n, n) {
		char _s, _t, _b;
		cin >> _s >> _t >> _b;
		s = _s - 'A';
		t = _t - 'A';
		b = _b - 'A';
		for (int i = 0; i < 9; i++) {
			patterns[0][i] = patterns[1][i] = 0;
		}
		patterns[0][s] = 1;
		int *pattern, *nextPattern;
		for (int i = 0; i < n; i++) {
			pattern = patterns[i % 2];
			nextPattern = patterns[(i+1) % 2];
			for (int j = 0; j < 9; j++) {
				nextPattern[j] = 0;
			}
			for (int j = 0; j < 9; j++) {
				int movablePoints[4];
				getMovablePoints(movablePoints, j);
				for (int k = 0; k < 4; k++) {
					nextPattern[movablePoints[k]] += pattern[j];
				}
			}

		}
		ll sum = 0;
		for (int i = 0; i < 9; i++) {
			sum += nextPattern[i];
		}

		printf("%.8lf\n", (double)nextPattern[t] / sum);

	}
	return 0;
}