#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
char ma[888][888];
int n,m,k,dist[888][888],pis[888][888],mn;
queue<pair<int,int> > q;
bool In(int x,int y)
{
	return (x>=0 && x<n && y>=0 && y<m);
}
int main()
{
	mn=1e9;
	scanf("%d%d%d",&n,&m,&k);
	for (int i=0;i<n;i++)
	scanf("%s",ma[i]);
	for (int i=0;i<n;i++)
	{
		for (int j=0;j<m;j++)
		{
			pis[i][j]=min(min(i,j),min(n-i-1,m-j-1));
			pis[i][j]=(pis[i][j]+k-1)/k;
		}
	}
	memset(dist,-1,sizeof(dist));
	for (int i=0;i<n;i++)
	{
		for (int j=0;j<m;j++)
		{
			if (ma[i][j]=='S') 
			{
				q.push(make_pair(i,j));
				dist[i][j]=0;
				mn=min(mn,pis[i][j]+1);
			}
		}
	}
	while(!q.empty())
	{
		int x=q.front().first,y=q.front().second;
		q.pop();
		if (dist[x][y]==k) break;
		for (int i=0;i<4;i++)
		{
			int xx=x+dx[i],yy=y+dy[i];
			if (In(xx,yy) && ma[xx][yy]=='.' && dist[xx][yy]==-1)
			{
				mn=min(mn,pis[xx][yy]+1);
				dist[xx][yy]=dist[x][y]+1;
				q.push(make_pair(xx,yy));
			}
		}
	}
	printf("%d\n",mn);
	return 0;
}