#include <bits/stdc++.h>
using namespace std;
const int N = 805;
int dis[N][N];
char g[N][N];
int dx[] = {0, 0, -1, 1};
int dy[] = {1, -1, 0, 0};
int R, C, K;
vector<int> v;
void bfs(int x, int y) {
  dis[x][y] = 0;
  queue<pair<int, int> > q;
  q.push({x, y});
  int T = min(x, min(R - x - 1, min(C - y - 1, y)));
  v.push_back((T + K - 1) / K);
  while (!q.empty()) {
    x = q.front().first;
    y = q.front().second;
    q.pop();
    if (dis[x][y] == K) continue;
    for (int i = 0; i < 4; i++) {
      int tx = dx[i] + x;
      int ty = dy[i] + y;
      if (tx < 0 || tx >= R || ty < 0 || ty >= C || dis[tx][ty] != -1 ||
          g[tx][ty] != '.')
        continue;
      dis[tx][ty] = dis[x][y] + 1;
      int T = min(tx, min(R - tx - 1, min(C - ty - 1, ty)));
      v.push_back((T + K - 1) / K);
    }
  }
}
int main() {
  scanf("%d%d%d", &R, &C, &K);
  int sx, sy;
  for (int i = 0; i < R; i++) {
    for (int j = 0; j < C; j++) {
      scanf(" %c", &g[i][j]);
      if (g[i][j] == 'S') {
        sx = i, sy = j;
      }
    }
  }
  memset(dis, -1, sizeof dis);
  bfs(sx, sy);
  sort(v.begin(), v.end());
  cout << v[0] + 1 << endl;
  return 0;
}
