#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;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8v0YDQtdC30YPQu9GM0YLQsNGCIC0g0Y3RgtC+INC60YLQviDQv9C+0LHQtdC00LjQuyArINC90LAg0LrQsNC60L7QvCDRhdC+0LTRgwp0eXBlZGVmIHN0ZDo6cGFpcjxpbnQsIGRvdWJsZT4gUmVzdWx0OwoKLy/RgdC/0LjRgdC+0Log0YDQtdC30YPQu9GM0YLQsNGC0L7QsiAo0L3QtSBsaXN0INC40Lct0LfQsCDRgdGA0LDQvdC+0Lkg0YHQvtGA0YLQuNGA0L7QstC60LgpCnN0ZDo6dmVjdG9yPFJlc3VsdD4gZW5kaW5nczsKCi8v0LTQvtCx0LDQstC40YLRjCDRgNC10LfRg9C70YzRgtCw0YIg0LIg0YHQv9C40YHQvtC6ICjQtdGB0LvQuCDQtdCz0L4g0YLQsNC8INC10YnQtSDQvdC10YIpCnZvaWQgYWRkUmVzdWx0KGNvbnN0IFJlc3VsdCYgcmVzdWx0KXsKICAgIGlmIChzdGQ6OmZpbmQoZW5kaW5ncy5iZWdpbigpLCBlbmRpbmdzLmVuZCgpLCByZXN1bHQpID09IGVuZGluZ3MuZW5kKCkpewogICAgICAgIGVuZGluZ3MucHVzaF9iYWNrKHJlc3VsdCk7CiAgICB9Cn0KCnZvaWQgdHVybihpbnQgbiwgY2hhciBwYXduX3gsIGNoYXIgcGF3bl95LCBjaGFyIHBvbnlfeCwgY2hhciBwb255X3kpewogICAgLy/QtdGB0LvQuCDRhdC+0LTQuNGCINC/0LXRiNC60LAo0LHQtdC70YvQtSkKICAgIGlmIChuICUgMiAhPSAwKSB7CiAgICAgICAgLy/QtdGB0LvQuCDQv9C10YjQutCwINGB0YLQsNC70LAg0YTQtdGA0LfQtdC8CiAgICAgICAgaWYgKHBhd25feSA9PSAnOCcpCiAgICAgICAgewogICAgICAgICAgICAvL9C30LDRhNC40LrRgdC40YDQvtCy0LDRgtGMINC/0L7QsdC10LTRgyDQsdC10LvRi9GFCiAgICAgICAgICAgIGFkZFJlc3VsdChSZXN1bHQobiwgMSkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICAgICAgLy/QtdGB0LvQuCDQv9C10YjQutC1INC/0YDQtdCz0YDQsNC20LTQsNGO0YIg0L/Rg9GC0YwKICAgICAgICBpZiAoKHBhd25feCA9PSBwb255X3gpICYmIChwYXduX3krMSA9PSBwb255X3kpKXsKICAgICAgICAgICAgLy/Qt9Cw0YTQuNC60YHQuNGA0L7QstCw0YLRjCDQvdC40YfRjNGOCiAgICAgICAgICAgIGFkZFJlc3VsdChSZXN1bHQobiwgMC41KSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8v0LXRgdC70Lgg0L/QtdGI0LrQsCDQvNC+0LbQtdGCINC/0L7QsdC40YLRjCDQutC+0L3RjwogICAgICAgIGlmICgocGF3bl95KzE9PXBvbnlfeSkmJigocGF3bl94KzE9PXBvbnlfeCl8fChwYXduX3gtMT09cG9ueV94KSkpewogICAgICAgICAgICAvL9C/0L7QtdCx0LTQsCDQsdC10LvRi9GFCiAgICAgICAgICAgIGFkZFJlc3VsdChSZXN1bHQobiwgMSkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvL9C40L3QsNGH0LUgLSDQv9C+0YXQvtC00LjRgtGMCiAgICAgICAgcmV0dXJuIHR1cm4obisxLCBwYXduX3gsIHBhd25feSsxLCBwb255X3gsIHBvbnlfeSk7CiAgICB9CgoKICAgIC8v0LXRgdC70Lgg0YXQvtC00LjRgiDQv9C+0L3QuCjRh9C10YDQvdGL0LUpCiAgICBlbHNlIHsKICAgICAgICBjaGFyIHBvbnlfdHVybnNbOF1bMl0gPSB7CiAgICAgICAgICAgIHsoY2hhcikocG9ueV94LTEpLCAoY2hhcikocG9ueV95LTIpfSwKICAgICAgICAgICAgeyhjaGFyKShwb255X3gtMiksIChjaGFyKShwb255X3ktMSl9LAogICAgICAgICAgICB7KGNoYXIpKHBvbnlfeC0xKSwgKGNoYXIpKHBvbnlfeSsyKX0sCiAgICAgICAgICAgIHsoY2hhcikocG9ueV94LTIpLCAoY2hhcikocG9ueV95KzEpfSwKICAgICAgICAgICAgeyhjaGFyKShwb255X3grMSksIChjaGFyKShwb255X3krMil9LAogICAgICAgICAgICB7KGNoYXIpKHBvbnlfeCsyKSwgKGNoYXIpKHBvbnlfeSsxKX0sCiAgICAgICAgICAgIHsoY2hhcikocG9ueV94KzEpLCAoY2hhcikocG9ueV95LTIpfSwKICAgICAgICAgICAgeyhjaGFyKShwb255X3grMiksIChjaGFyKShwb255X3ktMSl9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBpPDg7ICsraSkgewogICAgICAgICAgICAvL9C10YHQu9C4INC60L7QvdGMINC80L7QttC10YIg0L/QvtCx0LjRgtGMINC/0LXRiNC60YMKICAgICAgICAgICAgaWYgKChwb255X3R1cm5zW2ldWzBdID09IHBhd25feCkgJiYgKHBvbnlfdHVybnNbaV1bMV0gPT0gcGF3bl95KSl7CiAgICAgICAgICAgICAgICBhZGRSZXN1bHQoUmVzdWx0KG4sIC0xKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8g0LAg0LXRgdC70Lgg0L3QtSDQvNC+0LbQtdGCLCDQvdC+INGF0L7QtCDQsiDQv9GA0LXQtNC10LvQsNGFINGI0LDRhdC80LDRgtC90L7QuSDQtNC+0YHQutC4CiAgICAgICAgICAgIGVsc2UgaWYgKChwb255X3R1cm5zW2ldWzBdIDw9ICdoJykgJiYgKHBvbnlfdHVybnNbaV1bMF0gPj0gJ2EnKSAmJiAocG9ueV90dXJuc1tpXVsxXSA8PSAnOCcpICYmIChwb255X3R1cm5zW2ldWzFdID49ICcxJykpewogICAgICAgICAgICAgICAgLy/QuCDQtdGB0LvQuCDQvdCwINGB0LvQtdC00YPRjtGJ0LXQvCDRhdC+0LTRgyDQv9C10YjQutCwINC10LUg0L3QtSDQv9C+0LHRjNC10YIKICAgICAgICAgICAgICAgIGlmICghKChwb255X3R1cm5zW2ldWzFdID09IHBhd25feSsxKSAmJiAoKHBvbnlfdHVybnNbaV1bMF0gPT0gcGF3bl94KzEpIHx8IChwb255X3R1cm5zW2ldWzBdID09IHBhd25feC0xKSkpKXsKICAgICAgICAgICAgICAgICAgICB0dXJuKG4gKyAxLCBwYXduX3gsIHBhd25feSwgcG9ueV90dXJuc1tpXVswXSwgcG9ueV90dXJuc1tpXVsxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgc3RyaW5nIHBhd247CiAgICBzdHJpbmcgcG9ueTsKCiAgICBjaW4gPj4gcGF3bjsKICAgIGNpbiA+PiBwb255OwoKCiAgICAvL9C10YHQu9C4INGF0LjRgtGA0L7QstGL0LXQsdCw0L3QvdCw0Y8g0L/QvtC30LjRhtC40Y8sINGBINC60L7RgtC+0YDQvtC5INGDINC/0LXRiNC60Lgg0LXRgdGC0Ywg0LLRi9Cx0L7RgDoKICAgIGlmIChwYXduWzFdID09ICcyJyl7CiAgICAgICAgLy8g0LXRgdC70Lgg0L/QtdGI0LrQtSDQv9GA0LXQs9GA0LDQttC00LXQvSDQv9GD0YLRjAogICAgICAgIGlmICgocG9ueVsxXSA9PSAnMycpICYmIChwYXduWzBdID09IHBvbnlbMF0pKSB7CiAgICAgICAgICAgIGNvdXQgPDwgMC41IDw8IGVuZGw7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICAvLyDQtdGB0LvQuCDQv9C10YjQutC1INC/0YDQtdCz0YDQsNC20LTQtdC9INC/0YDRi9C20L7QuiDQvdCwIDIg0LrQu9C10YLQutC4CiAgICAgICAgZWxzZSBpZiAoKHBvbnlbMV0gPT0gJzQnKSAmJiAocGF3blswXSA9PSBwb255WzBdKSkgewogICAgICAgICAgICB0dXJuKDIsIHBhd25bMF0sIHBhd25bMV0rMSwgcG9ueVswXSwgcG9ueVsxXSk7CiAgICAgICAgICAgIHN0ZDo6c29ydChlbmRpbmdzLmJlZ2luKCksIGVuZGluZ3MuZW5kKCkpOwogICAgICAgICAgICBjb3V0IDw8IGVuZGluZ3NbMF0uc2Vjb25kIDw8IGVuZGw7CiAgICAgICAgfQogICAgICAgIC8vINC90LAg0L/Rg9GC0Lgg0L/QtdGI0LrQuCDQvdC40YfQtdCz0L4g0L3QtSDRgdGC0L7QuNGCCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8v0LXRgdC70Lgg0LzQvtC20L3QviDRgdGF0L7QtNGDINC/0L7QsdC40YLRjCDQv9C+0L3RjwogICAgICAgICAgICBpZiAoKHBhd25bMV0rMSA9PSBwb255WzFdKSAmJiAoKHBhd25bMF0rMSA9PSBwb255WzBdKXx8KHBhd25bMF0tMSA9PSBwb255WzBdKSkpewogICAgICAgICAgICAgICAgY291dCA8PCAxIDw8IGVuZGw7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyDQuNC90LDRh9C1INC/0YDQvtGB0YfQuNGC0YvQstCw0LXQvCDQstCw0YDQuNCw0L3RgtGLINC00LvRjyDQtNCy0YPRhSDQstC10YLQvtC6INGA0LDQt9Cy0LjRgtC40Y8g0YHQvtCx0YvRgtC40LkKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0dXJuKDIsIHBhd25bMF0sIHBhd25bMV0rMSwgcG9ueVswXSwgcG9ueVsxXSk7CiAgICAgICAgICAgICAgICBzdGQ6OnNvcnQoZW5kaW5ncy5iZWdpbigpLCBlbmRpbmdzLmVuZCgpKTsKICAgICAgICAgICAgICAgIFJlc3VsdCByZXN1bHQxID0gZW5kaW5nc1swXTsKCgogICAgICAgICAgICAgICAgZW5kaW5ncy5jbGVhcigpOwogICAgICAgICAgICAgICAgdHVybigyLCBwYXduWzBdLCBwYXduWzFdKzIsIHBvbnlbMF0sIHBvbnlbMV0pOwogICAgICAgICAgICAgICAgc3RkOjpzb3J0KGVuZGluZ3MuYmVnaW4oKSwgZW5kaW5ncy5lbmQoKSk7CiAgICAgICAgICAgICAgICBSZXN1bHQgcmVzdWx0MiA9IGVuZGluZ3NbMF07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8v0Lgg0LLRi9Cx0LjRgNCw0LXQvCDRgtC+0YIsINCyINC60L7RgtC+0YDQvtC8INGDINC/0LXRiNC60Lgg0LvRg9GH0YjQuNC5INGA0LXQt9GD0LvRjNGC0LDRggogICAgICAgICAgICAgICAgY291dCA8PCBzdGQ6Om1heChyZXN1bHQxLnNlY29uZCwgcmVzdWx0Mi5zZWNvbmQpIDw8IGVuZGw7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvL9C/0L7Qt9C40YbQuNGPINC/0LvQtdCy0LDRjyAtINGC0YPQv9C+INC+0LHRgdGH0LjRgtGL0LLQsNC10Lwg0LLRgdC1INGF0L7QtNGLINC4INGB0L7RgNGC0LjRgNGD0LXQvCDQv9C+INC/0L7Qt9C40YbQuNC4CiAgICBlbHNlIHsKICAgICAgICB0dXJuKDEsIHBhd25bMF0sIHBhd25bMV0sIHBvbnlbMF0sIHBvbnlbMV0pOwogICAgICAgIHN0ZDo6c29ydChlbmRpbmdzLmJlZ2luKCksIGVuZGluZ3MuZW5kKCkpOwogICAgICAgIGNvdXQgPDwgZW5kaW5nc1swXS5zZWNvbmQgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQo=