#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y;
};
char A[800][800];
int used[800][800];
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
int main() {
  int H, W, K;
  P s;
  cin >> H >> W >> K;
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cin >> A[i][j];
      if (A[i][j] == 'S') {
        s.x = i;
        s.y = j;
      }
    }
  }
  vector<P> q;
  q.push_back(s);
  used[s.x][s.y] = 1;
  int res = min(s.x, min(s.y, min(H - s.x - 1, W - s.y - 1)));
  for (int i = 0; i < K && !q.empty(); i++) {
    auto tmp = q;
    q.clear();
    for (auto p : tmp) {
      for (int j = 0; j < 4; j++) {
        int tx = p.x + dx[j], ty = p.y + dy[j];
        if (tx >= 0 && tx < H && ty >= 0 && ty < W && A[tx][ty] != '#' &&
            used[tx][ty] == 0) {
          used[tx][ty] = 1;
          q.push_back((P){tx, ty});
          res = min(tx, min(ty, min(H - tx - 1, W - ty - 1)));
        }
      }
    }
  }
  cout << ((res + K - 1) / K + 1) << endl;
  return 0;
}
