#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//результат - это кто победил + на каком ходу
typedef std::pair<int, double> Result;

//список результатов (не list из-за сраной сортировки)
std::vector<Result> endings;

//добавить результат в список (если его там еще нет)
void addResult(const Result& result){
    if (std::find(endings.begin(), endings.end(), result) == endings.end()){
        endings.push_back(result);
    }
}

void turn(int n, char pawn_x, char pawn_y, char pony_x, char pony_y){
    //если ходит пешка(белые)
    if (n % 2 != 0) {
        //если пешка стала ферзем
        if (pawn_y == '8')
        {
            //зафиксировать победу белых
            addResult(Result(n, 1));
            return;
        }


        //если пешке преграждают путь
        if ((pawn_x == pony_x) && (pawn_y+1 == pony_y)){
            //зафиксировать ничью
            addResult(Result(n, 0.5));
            return;
        }

        //если пешка может побить коня
        if ((pawn_y+1==pony_y)&&((pawn_x+1==pony_x)||(pawn_x-1==pony_x))){
            //поебда белых
            addResult(Result(n, 1));
            return;
        }

        //иначе - походить
        return turn(n+1, pawn_x, pawn_y+1, pony_x, pony_y);
    }


    //если ходит пони(черные)
    else {
        char pony_turns[8][2] = {
            {(char)(pony_x-1), (char)(pony_y-2)},
            {(char)(pony_x-2), (char)(pony_y-1)},
            {(char)(pony_x-1), (char)(pony_y+2)},
            {(char)(pony_x-2), (char)(pony_y+1)},
            {(char)(pony_x+1), (char)(pony_y+2)},
            {(char)(pony_x+2), (char)(pony_y+1)},
            {(char)(pony_x+1), (char)(pony_y-2)},
            {(char)(pony_x+2), (char)(pony_y-1)}
        };

        for (int i=0; i<8; ++i) {
            //если конь может побить пешку
            if ((pony_turns[i][0] == pawn_x) && (pony_turns[i][1] == pawn_y)){
                addResult(Result(n, -1));
                return;
            }
            // а если не может, но ход в пределах шахматной доски
            else if ((pony_turns[i][0] <= 'h') && (pony_turns[i][0] >= 'a') && (pony_turns[i][1] <= '8') && (pony_turns[i][1] >= '1')){
                //и если на следующем ходу пешка ее не побьет
                if (!((pony_turns[i][1] == pawn_y+1) && ((pony_turns[i][0] == pawn_x+1) || (pony_turns[i][0] == pawn_x-1)))){
                    turn(n + 1, pawn_x, pawn_y, pony_turns[i][0], pony_turns[i][1]);
                }
            }
        }
    }
}

int main()
{
    string pawn;
    string pony;

    cin >> pawn;
    cin >> pony;


    //если хитровыебанная позиция, с которой у пешки есть выбор:
    if (pawn[1] == '2'){
        // если пешке прегражден путь
        if ((pony[1] == '3') && (pawn[0] == pony[0])) {
            cout << 0.5 << endl;
            return 0;
        }
        // если пешке прегражден прыжок на 2 клетки
        else if ((pony[1] == '4') && (pawn[0] == pony[0])) {
            turn(2, pawn[0], pawn[1]+1, pony[0], pony[1]);
            std::sort(endings.begin(), endings.end());
            cout << endings[0].second << endl;
        }
        // на пути пешки ничего не стоит
        else {
            //если можно сходу побить поня
            if ((pawn[1]+1 == pony[1]) && ((pawn[0]+1 == pony[0])||(pawn[0]-1 == pony[0]))){
                cout << 1 << endl;
                return 0;
            }
            // иначе просчитываем варианты для двух веток развития событий
            else {
                turn(2, pawn[0], pawn[1]+1, pony[0], pony[1]);
                std::sort(endings.begin(), endings.end());
                Result result1 = endings[0];


                endings.clear();
                turn(2, pawn[0], pawn[1]+2, pony[0], pony[1]);
                std::sort(endings.begin(), endings.end());
                Result result2 = endings[0];
                
                //и выбираем тот, в котором у пешки лучший результат
                cout << std::max(result1.second, result2.second) << endl;
                return 0;
            }
        }
    }

    //позиция плевая - тупо обсчитываем все ходы и сортируем по позиции
    else {
        turn(1, pawn[0], pawn[1], pony[0], pony[1]);
        std::sort(endings.begin(), endings.end());
        cout << endings[0].second << endl;
        return 0;
    }
}
