#include<stdio.h>
#include<deque>
using namespace std;
int dx[4] = { 0,-1,0, 1};
int dy[4] = { 1,0,-1, 0};
char M[22][22];
bool is_gone[22][22][4][22][22][4];
deque<int>quex1, quey1, qued1;
deque<int>quex2, quey2, qued2;
deque<int>quedist;
void push_(int x1, int y1, int d1, int x2, int y2, int d2,int dist) {
if (is_gone[x1][y1][d1][x2][y2][d2])return;
quex1.push_back(x1);quey1.push_back(y1);qued1.push_back(d1);
quex2.push_back(x2);quey2.push_back(y2);qued2.push_back(d2);
quedist.push_back(dist);
is_gone[x1][y1][d1][x2][y2][d2] = 1;
}
int main() {
int n;
int i, j;
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf(" %c", &M[i][j]);
}
}
push_(n - 1, 0, 0, n - 1, 0, 1, 0);
while (!quex1.empty()) {
int x1 = quex1.front(), y1 = quey1.front(), d1 = qued1.front();
int x2 = quex2.front(), y2 = quey2.front(), d2 = qued2.front();
int dist = quedist.front();
if (x1 ==0 && y1 == n - 1 && x2 ==0 && y2 == n - 1) {
printf("%d", dist);
return 0;
}
quex1.pop_front(); quey1.pop_front(); qued1.pop_front();
quex2.pop_front(); quey2.pop_front(); qued2.pop_front();
quedist.pop_front();
int nextx1 = x1, nexty1 = y1, nextd1 = d1;
int nextx2 = x2, nexty2 = y2, nextd2 = d2;
if ((!(x1==0&&y1==n-1))&&0 <= x1 + dx[d1] && x1 + dx[d1] < n && 0 <= y1 + dy[d1] && y1 + dy[d1] < n&&M[x1 + dx[d1]][y1 + dy[d1]] == 'E')nextx1 = x1 + dx[d1], nexty1 = y1 + dy[d1];
if ((!(x2==0&&y2==n-1))&&0 <= x2 + dx[d2] && x2 + dx[d2] < n && 0 <= y2 + dy[d2] && y2 + dy[d2] < n&&M[x2 + dx[d2]][y2 + dy[d2]] == 'E')nextx2 = x2 + dx[d2], nexty2 = y2 + dy[d2];
push_(nextx1, nexty1, nextd1, nextx2, nexty2, nextd2,dist+1);
nextx1 = x1, nexty1 = y1, nextd1 = (d1 + 1)%4;
nextx2 = x2, nexty2 = y2, nextd2 = (d2 + 1)%4;
push_(nextx1, nexty1, nextd1, nextx2, nexty2, nextd2,dist+1);
nextx1 = x1, nexty1 = y1, nextd1 = (d1 + 3) % 4;
nextx2 = x2, nexty2 = y2, nextd2 = (d2 + 3) % 4;
push_(nextx1, nexty1, nextd1, nextx2, nexty2, nextd2,dist+1);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8ZGVxdWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZHhbNF0gPSB7IDAsLTEsMCwgMX07CmludCBkeVs0XSA9IHsgMSwwLC0xLCAwfTsKY2hhciBNWzIyXVsyMl07CmJvb2wgaXNfZ29uZVsyMl1bMjJdWzRdWzIyXVsyMl1bNF07CmRlcXVlPGludD5xdWV4MSwgcXVleTEsIHF1ZWQxOwpkZXF1ZTxpbnQ+cXVleDIsIHF1ZXkyLCBxdWVkMjsKZGVxdWU8aW50PnF1ZWRpc3Q7CnZvaWQgcHVzaF8oaW50IHgxLCBpbnQgeTEsIGludCBkMSwgaW50IHgyLCBpbnQgeTIsIGludCBkMixpbnQgZGlzdCkgewoJaWYgKGlzX2dvbmVbeDFdW3kxXVtkMV1beDJdW3kyXVtkMl0pcmV0dXJuOwoJcXVleDEucHVzaF9iYWNrKHgxKTtxdWV5MS5wdXNoX2JhY2soeTEpO3F1ZWQxLnB1c2hfYmFjayhkMSk7CglxdWV4Mi5wdXNoX2JhY2soeDIpO3F1ZXkyLnB1c2hfYmFjayh5Mik7cXVlZDIucHVzaF9iYWNrKGQyKTsKCXF1ZWRpc3QucHVzaF9iYWNrKGRpc3QpOwoJaXNfZ29uZVt4MV1beTFdW2QxXVt4Ml1beTJdW2QyXSA9IDE7Cn0KCmludCBtYWluKCkgewoJaW50IG47CglpbnQgaSwgajsKCXNjYW5mKCIlZCIsICZuKTsKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7CgkJCXNjYW5mKCIgJWMiLCAmTVtpXVtqXSk7CgkJfQoJfQoJcHVzaF8obiAtIDEsIDAsIDAsIG4gLSAxLCAwLCAxLCAwKTsKCXdoaWxlICghcXVleDEuZW1wdHkoKSkgewoJCWludCB4MSA9IHF1ZXgxLmZyb250KCksIHkxID0gcXVleTEuZnJvbnQoKSwgZDEgPSBxdWVkMS5mcm9udCgpOwoJCWludCB4MiA9IHF1ZXgyLmZyb250KCksIHkyID0gcXVleTIuZnJvbnQoKSwgZDIgPSBxdWVkMi5mcm9udCgpOwoJCWludCBkaXN0ID0gcXVlZGlzdC5mcm9udCgpOwoJCWlmICh4MSA9PTAgJiYgeTEgPT0gbiAtIDEgJiYgeDIgPT0wICYmIHkyID09IG4gLSAxKSB7CgkJCXByaW50ZigiJWQiLCBkaXN0KTsKCQkJcmV0dXJuIDA7CgkJfQoJCXF1ZXgxLnBvcF9mcm9udCgpOyBxdWV5MS5wb3BfZnJvbnQoKTsgcXVlZDEucG9wX2Zyb250KCk7CgkJcXVleDIucG9wX2Zyb250KCk7IHF1ZXkyLnBvcF9mcm9udCgpOyBxdWVkMi5wb3BfZnJvbnQoKTsKCQlxdWVkaXN0LnBvcF9mcm9udCgpOwoJCWludCBuZXh0eDEgPSB4MSwgbmV4dHkxID0geTEsIG5leHRkMSA9IGQxOwoJCWludCBuZXh0eDIgPSB4MiwgbmV4dHkyID0geTIsIG5leHRkMiA9IGQyOwoJCWlmICgoISh4MT09MCYmeTE9PW4tMSkpJiYwIDw9IHgxICsgZHhbZDFdICYmIHgxICsgZHhbZDFdIDwgbiAmJiAwIDw9IHkxICsgZHlbZDFdICYmIHkxICsgZHlbZDFdIDwgbiYmTVt4MSArIGR4W2QxXV1beTEgKyBkeVtkMV1dID09ICdFJyluZXh0eDEgPSB4MSArIGR4W2QxXSwgbmV4dHkxID0geTEgKyBkeVtkMV07CgkJaWYgKCghKHgyPT0wJiZ5Mj09bi0xKSkmJjAgPD0geDIgKyBkeFtkMl0gJiYgeDIgKyBkeFtkMl0gPCBuICYmIDAgPD0geTIgKyBkeVtkMl0gJiYgeTIgKyBkeVtkMl0gPCBuJiZNW3gyICsgZHhbZDJdXVt5MiArIGR5W2QyXV0gPT0gJ0UnKW5leHR4MiA9IHgyICsgZHhbZDJdLCBuZXh0eTIgPSB5MiArIGR5W2QyXTsKCQlwdXNoXyhuZXh0eDEsIG5leHR5MSwgbmV4dGQxLCBuZXh0eDIsIG5leHR5MiwgbmV4dGQyLGRpc3QrMSk7CgkJbmV4dHgxID0geDEsIG5leHR5MSA9IHkxLCBuZXh0ZDEgPSAoZDEgKyAxKSU0OwoJCW5leHR4MiA9IHgyLCBuZXh0eTIgPSB5MiwgbmV4dGQyID0gKGQyICsgMSklNDsKCQlwdXNoXyhuZXh0eDEsIG5leHR5MSwgbmV4dGQxLCBuZXh0eDIsIG5leHR5MiwgbmV4dGQyLGRpc3QrMSk7CgkJbmV4dHgxID0geDEsIG5leHR5MSA9IHkxLCBuZXh0ZDEgPSAoZDEgKyAzKSAlIDQ7CgkJbmV4dHgyID0geDIsIG5leHR5MiA9IHkyLCBuZXh0ZDIgPSAoZDIgKyAzKSAlIDQ7CgkJcHVzaF8obmV4dHgxLCBuZXh0eTEsIG5leHRkMSwgbmV4dHgyLCBuZXh0eTIsIG5leHRkMixkaXN0KzEpOwoJfQoJcmV0dXJuIDA7Cn0=