#include <bits/stdc++.h>
using namespace std;
int H, W, K;
char Map[1000][1000];
int dst[1000][1000];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
void bfs(int sx, int sy) {
  queue<pair<int, int> > q;
  q.push(pair<int, int>{sx, sy});
  dst[sx][sy] = 1;
  while (q.size()) {
    int x, y;
    tie(x, y) = q.front();
    q.pop();
    if (dst[x][y] == K + 1) continue;
    for (int d = 0; d < 4; ++d) {
      int nx = x + dx[d], ny = y + dy[d];
      if (nx >= 0 && ny >= 0 && nx < H && ny < W && Map[nx][ny] != '#' &&
          !dst[nx][ny]) {
        dst[nx][ny] = dst[x][y] + 1;
        q.push(pair<int, int>{nx, ny});
      }
    }
  }
}
int main() {
  cin >> H >> W >> K;
  for (size_t i = 0; i < H; i++) {
    cin >> Map[i];
  }
  int sx, sy;
  for (size_t i = 0; i < H; i++) {
    for (size_t w = 0; w < W; w++) {
      if (Map[i][w] == 'S') {
        sx = w;
        sy = i;
        Map[i][w] = '.';
      }
    }
  }
  bfs(sx, sy);
  int res = 1e9;
  for (int i = 0; i < H; i++) {
    for (int w = 0; w < W; w++) {
      if (Map[i][w] != '#' && dst[i][w]) {
        res = min(res, 1 + (min({i, H - i - 1, w, W - w - 1}) + K - 1) / K);
      }
    }
  }
  cout << res << endl;
  return 0;
}
