#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(V) V.begin(),V.end()
#define FINISH cout<<"No"<<endl;return 0;

bool arr[810][810];
string ma[810];
ll H, W;
ll hi = LLONG_MAX / 2, wi = hi, hx = 0, wx = 0;

int main() {
	ll K, a, b, c;
	cin >> H >> W >> K;
	for (int i = 0;i < H;i++)cin >> ma[i];
	for (int i = 0;i < H;i++) {
		for (int j = 0;j < W;j++) {
			arr[i][j] = 0;
			if (ma[i][j] == 'S') {
				a = i, b = j;
			}
		}
	}
	queue<tuple<ll, ll, ll>> Q;
	Q.push(make_tuple(a, b, K));
	while (!Q.empty()) {
		tie(a, b, c) = Q.front();
		Q.pop();
		if (ma[a][b] == '#') {
			continue;
		}
		if (a == 0 || b == 0 || a == H - 1 || b == W - 1) {
			cout << 1 << endl;
			return 0;
		}
		if (arr[a][b])continue;
		arr[a][b] = 1;
		hi = min(hi, a);
		wi = min(wi, b);
		hx = max(hx, a);
		wx = max(wx, b);
		if (c < 1)continue;
		Q.push(make_tuple(a - 1, b, c - 1));
		Q.push(make_tuple(a + 1, b, c - 1));
		Q.push(make_tuple(a, b - 1, c - 1));
		Q.push(make_tuple(a, b + 1, c - 1));
	}
	hi = min(hi, H - hx - 1);
	wi = min(wi, W - wx - 1);
	c = min(hi, wi);
	cout << (c - 1) / K + 2 << endl;
}