//DWITE

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

static int mx[8] = {-1,0,1,-1,1,-1,0,1};
static int my[8] = {-1,-1,-1,0,0,1,1,1};

bool field[20][20];
int dyn[20][20];

bool valid(int a)
{
	if (a<0)
		return(false);
	if (a>9)
		return(false);
	return(true);
}

void rec(int y, int x, int m)
{
	dyn[y][x]=m;
		for (int z=0; z<8; z++)
			if ((valid(y+my[z])) && (valid(x+mx[z])) && (!field[y+my[z]][x+mx[z]]) && (dyn[y+my[z]][x+mx[z]]>m+1))
				rec(y+my[z],x+mx[z],m+1);
}

int main()
{
	//vars
	ifstream f ("DATA4.TXT");
	ofstream g ("OUT4.TXT");
	int sx,sy,fx,fy;
	int a,b;
	char ch;
	string s;
		for (int t=0; t<5; t++)	/////////////////////
		{
			memset(field,false,sizeof(field));
			//input
			sx=-1;
			sy=-1;
				for (a=0; a<10; a++)
					for (b=0; b<10; b++)
					{
						f >> ch;
							if (ch=='X')
							{
								if (sx==-1)
								{
									sx=b;
									sy=a;
								}
								else
								{
									fx=b;
									fy=a;
								}
							}
							else
							if (ch=='#')
								field[a][b]=true;
					}
			//output
			memset(dyn,100,sizeof(dyn));
			rec(sy,sx,0);
			g << dyn[fy][fx] << endl;
			cout << dyn[fy][fx] << endl;
			f >> s;
		}
	return(0);
}
