#include <bits/stdc++.h>
using namespace std;
int n, m, k;
char mat[855][855];
int d[855][855];
const int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int main() {
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 0; i < n; i++) {
    scanf("%s", mat[i]);
  }
  pair<int, int> t;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      if (mat[i][j] == 'S') {
        t = pair<int, int>(i, j);
      }
    }
  queue<pair<int, int> > que;
  memset(d, -1, sizeof(d));
  d[t.first][t.second] = 0;
  que.push(t);
  while (!que.empty()) {
    pair<int, int> p = que.front();
    que.pop();
    if (d[p.first][p.second] == k) break;
    for (int i = 0; i < 4; i++) {
      int nx = p.first + dx[i], ny = p.second + dy[i];
      if (nx >= 0 && nx < n && ny >= 0 && ny < m && mat[nx][ny] == '.' &&
          d[nx][ny] < 0) {
        d[nx][ny] = 0;
        que.push(pair<int, int>(nx, ny));
      }
    }
  }
  int res = INT_MAX;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (~d[i][j]) {
        res = min(res,
                  (min(min(i, n - i - 1), min(j, m - j - 1)) + k - 1) / k + 1);
      }
  printf("%d\n", res);
  return 0;
}
