#include <bits/stdc++.h>
using namespace std;
 
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl "\n"
#define int long long

const int N=805;

int n, m, k, ans=1e9;
char a[N][N];
int vis[N][N], dist[N][N], ways[N][N];
int dx[4]={-1, +1, 0, 0};
int dy[4]={0, 0, +1, -1};

void bfs(int x, int y, int n, int m)
{
	queue<pair<int, int> > q;
	q.push({x, y});
	ways[x][y]=1;
	vis[x][y]=1;
	dist[x][y]=0;
	while(!q.empty())
	{
		int x=q.front().first;
		int y=q.front().second;
		q.pop();
		if(a[x][y]=='#')
			continue;
		for(int dir=0;dir<4;dir++)
		{
			int nx=x+dx[dir];
			int ny=y+dy[dir];
			if(nx<1 || ny<1 || nx>n || ny>m)
				continue;
			if(!vis[nx][ny])
			{
				dist[nx][ny]=dist[x][y]+1;
				vis[nx][ny]=1;
				q.push({nx, ny});
			}
		}
	}
}

int get(int x, int y)
{
	return min({x-1, n-x, y-1, m-y});
}

int32_t main()
{
	IOS;
	int sx, sy;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			if(a[i][j]=='S')
				sx=i, sy=j;
		}
	bfs(sx, sy, n, m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(vis[i][j] && dist[i][j]<=k && a[i][j]!='#')
				ans=min(ans, 1 + (get(i, j)+k-1)/k);
	cout<<ans;
	return 0;
}
