/*#include <stdio.h>
int arr[100]={};
int a, cnt=0;
void dab()
{
int brr[100];
int i, j, p=0;
brr[a-1]=arr[a];
for(i=a-3;i>1;i-=2)
{
brr[i]=arr[i+1]-brr[i+2];
}
if(a%2==1)
{
brr[1]=arr[1]-brr[2];
for(j=3;j<=a;j+=2)
brr[j]=arr[j-1]-brr[j-2];
}
else
{
brr[2]=arr[1]-brr[1];
for(j=4;j<=a;j+=2)
brr[j]=arr[j-1]-brr[j-2];
}*/
/*brr[4]=arr[5]
brr[2]=arr[3]-brr[4]=arr[3]-arr[5]
brr[1]=arr[1]-brr[2]=arr[1]-arr[3]+arr[5]
brr[3]=arr[2]-brr[1]=arr[2]-arr[1]+arr[3]-arr[5]
brr[5]=arr[4]-brr[3]=arr[4]-arr[2]+arr[1]-arr[3]+arr[5]*/
/*cnt++;
for(i=1;i<=a;i++)
{
printf("%d ",brr[i]);
}
printf("\n");
for(i=0;i<=a;i++)
if(brr[i]<0)
p=1;
if(p==1&&cnt>1){
printf("%dtimes divided\n", cnt-1);
return ;}
if(p==1&&cnt<=1){
printf("-1times divided\n");
return ;}
for(i=1;i<=a;i++)
arr[i]=brr[i];
dab();
}
int main()
{
int n, i, j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d", &a);
for(j=1;j<=a;j++)
scanf("%d", &arr[j]);
dab();
cnt=0;
}
}
*/
/*
2
5
1 3 0 3 0
5
1 2 3 4 5
*/
#include <stdio.h>
int n, m, x, a, b, cnt=-1, dab=10000000;
char arr[100][100];
int queue[100][2], hehehe[1000], d=1, l=1, visited[100][100]={}, visit[10000];
int front=0, rear=0;
void bfs(int p, int q)
{
if(p==a&&q==b)
{
if(cnt+1<dab)
dab=cnt+1;
return ;
}
printf("%d %d %d\n\n\n",p,q,cnt);
visited[p][q]=1;
if(arr[p+1][q]!='F'&&visited[p+1][q]==0&&p+1>=0&&q>=0&&p+1<n&&q<m)
{
queue[rear][0]=p+1;
queue[rear++][1]=q;
}
if(arr[p-1][q]!='F'&&visited[p-1][q]==0&&p-1>=0&&q>=0&&p-1<n&&q<m)
{
queue[rear][0]=p-1;
queue[rear++][1]=q;
}
if(arr[p][q+1]!='F'&&visited[p][q+1]==0&&p>=0&&q+1>=0&&p<n&&q+1<m)
{
queue[rear][0]=p;
queue[rear++][1]=q+1;
}
if(arr[p][q-1]!='F'&&visited[p][-1]==0&&p>=0&&q-1>=0&&p<n&&q-1<m)
{
queue[rear][0]=p;
queue[rear++][1]=q-1;
}
}
void fire()
{
int i, j, brr[100][2], g=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(arr[i][j]=='F')
{
brr[++g][0]=i;
brr[g][1]=j;
}
}
}
for(int i=1;i<=g;i++)
{
arr[brr[i][0]+1][brr[i][1]]='F';
arr[brr[i][0]][brr[i][1]+1]='F';
arr[brr[i][0]-1][brr[i][1]]='F';
arr[brr[i][0]][brr[i][1]-1]='F';
}
}
int main()
{
scanf("%d %d %d\n", &n, &m, &x);
int i, j;
for(i=0;i<n;i++)
scanf("%s",arr[i]);
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(arr[i][j]=='Y')
{
queue[++rear][0]=i;
queue[rear][1]=j;
}
if(arr[i][j]=='E')
{
a=i;
b=j;
}
}
}
/*printf("%d %d\n", queue[1][0], queue[1][1]);
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
printf("%c ",arr[i][j]);
}
printf("\n");
}*/
hehehe[d++]=1;
while(front!=rear)
{
int r=queue[++front][0];
int t=queue[front][1];
if(front==hehehe[l])
{
cnt++;
l++;
}
if(visit[cnt]==0&&cnt%x==0&&cnt!=0)
{
visit[cnt]=1;
fire();
}
bfs(r, t);
hehehe[d++]=rear;
}
printf("%d\n", dab);
}
/*
5 5 2
FOOOE
OOOOO
OOOOO
OOOOO
YOFFO
*/