#include <iostream>
using namespace std;
bool isValidHorseMove(const char * m) // "A1-B3"
{
return 0 == (0xfffffb & ((m[0]-m[3])*(m[1]-m[4])+2));
}
int main()
{
// ABCDEFGH
// 1........
// 2..x.x...
// 3.x...x..
// 4...O....
// 5.x...x..
// 6..x.x...
// 7........
// 8........
cout << "True: ";
cout << isValidHorseMove("D4-B3");
cout << isValidHorseMove("D4-C2");
cout << isValidHorseMove("D4-E2");
cout << isValidHorseMove("D4-F3");
cout << isValidHorseMove("D4-F5");
cout << isValidHorseMove("D4-E6");
cout << isValidHorseMove("D4-C6");
cout << isValidHorseMove("D4-B5");
cout << endl;
// ABCDEFGH
// 1........
// 2.x.x.x..
// 3..xxx...
// 4.xxOxx..
// 5..xxx...
// 6.x.x.x..
// 7........
// 8........
cout << "False: ";
cout << isValidHorseMove("D4-B2");
cout << isValidHorseMove("D4-D2");
cout << isValidHorseMove("D4-F2");
cout << isValidHorseMove("D4-C3");
cout << isValidHorseMove("D4-D3");
cout << isValidHorseMove("D4-E3");
cout << isValidHorseMove("D4-B4");
cout << isValidHorseMove("D4-C4");
cout << isValidHorseMove("D4-E4");
cout << isValidHorseMove("D4-F4");
cout << isValidHorseMove("D4-C5");
cout << isValidHorseMove("D4-D5");
cout << isValidHorseMove("D4-E5");
cout << isValidHorseMove("D4-B6");
cout << isValidHorseMove("D4-D6");
cout << isValidHorseMove("D4-F6");
cout << endl;
}