#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <stdio.h>

using namespace std;

int n;
char s,t,b;

typedef pair<int,int> Pair;

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> placeList;
	vector<Pair> 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]+=placeCount[i][j];
					// ツ可コ
					if(i + 1 < 3 && !(i + 1 == wareHouse.first && j == wareHouse.second))
						nextPlaceCount[i+1][j]+=placeCount[i][j];
					else
						nextPlaceCount[i][j]+=placeCount[i][j];
					// ツ債カ
					if(j - 1 >= 0 && !(i == wareHouse.first && j - 1 == wareHouse.second))
						nextPlaceCount[i][j-1]+=placeCount[i][j];
					else
						nextPlaceCount[i][j]+=placeCount[i][j];
					// ツ右
					if(j + 1 < 3 && !(i == wareHouse.first && j + 1 == wareHouse.second))
						nextPlaceCount[i][j+1]+=placeCount[i][j];
					else
						nextPlaceCount[i][j]+=placeCount[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(){
	//ifstream ifs("prob1020.txt");
	while(1){
		//ifs >> n;
		cin >> n;

		if(n == 0)
			break;
		cin >> s;
		cin >> t;
		cin >> b;
		//ifs >> s;
		//ifs >> t;
		//ifs >> b;
		double result = calc();
		printf("%.8f\n",result);
	}
}

int main(){
solve();
return 0;
}