#include <bits/stdc++.h>
using namespace std;
const int maxn = 807;
int n, m, ans, k, h, w, sx, sy;
int a[maxn][maxn];
char s[maxn][maxn];
int dx[] = {1, -1, 0, 1};
int dy[] = {0, 0, 1, -1};
bool check(int x, int y) {
  if (x >= 1 && x <= h && y >= 1 && y <= w) return 1;
  return 0;
}
int dis(int x, int y) {
  int ans = x - 1;
  ans = min(ans, h - x);
  ans = min(ans, w - y);
  ans = min(ans, y - 1);
  return ans;
}
void bfs(int x, int y) {
  queue<pair<int, int> > q;
  q.push(make_pair(x, y));
  while (!q.empty()) {
    int nx = q.front().first, ny = q.front().second;
    q.pop();
    if (a[nx][ny] == k) break;
    for (int i = 0; i < 4; ++i) {
      int tx = nx + dx[i];
      int ty = ny + dy[i];
      if (check(tx, ty) && a[tx][ty] == -1 && s[tx][ty] == '.') {
        a[tx][ty] = a[nx][ny] + 1;
        q.push(make_pair(tx, ty));
      }
    }
  }
}
int main() {
  int i, j;
  scanf("%d%d%d", &h, &w, &k);
  for (i = 1; i <= h; ++i) scanf("%s", s[i] + 1);
  for (i = 1; i <= h; ++i)
    for (j = 1; j <= w; ++j)
      if (s[i][j] == 'S') sx = i, sy = j;
  memset(a, -1, sizeof(a));
  a[sx][sy] = 0;
  bfs(sx, sy);
  int dist = 500;
  for (i = 1; i <= h; ++i)
    for (j = 1; j <= w; ++j)
      if (a[i][j] != -1) {
        dist = min(dist, dis(i, j));
      }
  printf("%d", 1 + (dist + k - 1) / k);
  return 0;
}
