#include <bits/stdc++.h>
using namespace std;
bool c[805][805];
int h, w, k;
vector<string> vs(805);
void dfs(int x, int y, int ck) {
  c[x][y] = true;
  if (ck == 0) return;
  if (x > 0 && vs[x - 1][y] != '#' && !c[x - 1][y]) dfs(x - 1, y, ck - 1);
  if (y > 0 && vs[x][y - 1] != '#' && !c[x][y - 1]) dfs(x, y - 1, ck - 1);
  if (x < h - 1 && vs[x + 1][y] != '#' && !c[x + 1][y]) dfs(x + 1, y, ck - 1);
  if (y < w - 1 && vs[x][y + 1] != '#' && !c[x][y + 1]) dfs(x, y + 1, ck - 1);
}
int main() {
  cin >> h >> w >> k;
  for (int(i) = 0; (i) < h; (i)++) cin >> vs[i];
  int sx, sy;
  for (int(i) = 0; (i) < h; (i)++)
    for (int(j) = 0; (j) < w; (j)++)
      if (vs[i][j] == 'S') {
        sx = i;
        sy = j;
      }
  for (int(i) = 0; (i) < h; (i)++)
    for (int(j) = 0; (j) < w; (j)++) c[i][j] = false;
  dfs(sx, sy, k);
  int dis = 2000, fx, fy;
  for (int(i) = 0; (i) < h; (i)++)
    for (int(j) = 0; (j) < w; (j)++)
      if (c[i][j]) {
        int dx = min(h - i - 1, i);
        int dy = min(w - j - 1, j);
        if (min(dx, dy) < dis) {
          dis = min(dx, dy);
          fx = i;
          fy = j;
        }
      }
  if (dis % k)
    cout << dis / k + 2 << endl;
  else
    cout << dis / k + 1 << endl;
  return 0;
}
