#include <bits/stdc++.h>
using namespace std;
char mp[801][802];
int dist[801][801];
int main() {
  int n, m, k;
  scanf("%d%d%d%*c", &n, &m, &k);
  int sx, sy;
  for (int i = 1; i <= n; ++i) {
    scanf("%s", mp[i] + 1);
    for (int j = 1; j <= m; ++j) {
      if (mp[i][j] == 'S') {
        sx = i;
        sy = j;
      }
    }
  }
  queue<pair<int, int> > q;
  q.push(make_pair(sx, sy));
  memset(dist, -1, sizeof(dist));
  dist[sx][sy] = 0;
  while (!q.empty()) {
    int fx = q.front().first, fy = q.front().second;
    q.pop();
    if (dist[fx][fy] == k) continue;
    for (int i = -1; i <= 1; ++i)
      for (int j = -1; j <= 1; ++j) {
        int ox = fx + i, oy = fy + j;
        if (ox > 0 && ox <= n && oy > 0 && oy <= m && (i == 0 || j == 0) &&
            mp[ox][oy] != '#' && dist[ox][oy] == -1) {
          dist[ox][oy] = dist[fx][fy] + 1;
          q.push(make_pair(ox, oy));
        }
      }
  }
  int mindist = 1000000000;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (dist[i][j] != -1) {
        int curdist = min(i - 1, min(n - i, min(j - 1, m - j)));
        if (curdist < mindist) mindist = curdist;
      }
  printf("%d", 1 + (mindist % k ? mindist / k + 1 : mindist));
  return 0;
}
