#include <iostream>
#include <queue>
#include <fstream>
using namespace std;

int main()
{
	int t = 5,d[20][20],move[8][2] = {{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}};
	int r,c,i,j,k,cd;
	bool b;
	char grid[20][20];
	queue<int> qx;
	queue<int> qy;
	ifstream fin("DATA4.TXT");
	ofstream fout("OUT4.TXT");
	while (t--)
	{
		for (i=0;i<8;i++)
			for (j=0;j<8;j++)
			{
				fin>>grid[i][j];
				if (grid[i][j]=='A')
					qx.push(i), qy.push(j);
			}
		memset(d,-1,sizeof(d));
		d[qx.front()][qy.front()] = 0;
		b = 1;
		while (!qx.empty())
		{
			int x = qx.front();
			int y = qy.front();
			qx.pop();
			qy.pop();
			if (grid[x][y]=='B')
			{
				fout<<d[x][y]<<endl;
				b = 0;
				break;
			}
			cd = d[x][y];
			for (k=0;k<8;k++)
			{
				unsigned int nx = x + move[k][0], ny = y + move[k][1];
				if (nx<8 && ny<8 && d[nx][ny]==-1 && grid[nx][ny]!='#')
				{
					d[nx][ny] = cd+1;
					qx.push(nx);
					qy.push(ny);
				}
			}

		}
		if (b)
			fout<<-1<<endl;
		while(!qx.empty())
			qx.pop(), qy.pop();
	}
	fin.close();
	fout.close();
	return 0;
}


