#include <bits/stdc++.h>
using namespace std;
static int dp[810][810];
static int a[810][810];
int h, w;
int search(int x, int y, int m) {
  if (dp[x][y] == 1) return 0;
  dp[x][y] = 1;
  if (m == 0) return 0;
  if (x > 0 && a[x - 1][y] == 0) search(x - 1, y, m - 1);
  if (x < h - 1 && a[x + 1][y] == 0) search(x + 1, y, m - 1);
  if (y > 0 && a[x][y - 1] == 0) search(x, y - 1, m - 1);
  if (y < w - 1 && a[x][y + 1] == 0) search(x, y + 1, m - 1);
  return 0;
}
int main(void) {
  int m;
  char s[810];
  int x, y;
  int i, j, k, l;
  int flag = 0;
  int ans = 0;
  int count = 0;
  int temp, temp1, temp2;
  int max, min;
  int len;
  int sum = 0;
  int ok, ng;
  int r;
  scanf("%d %d %d", &h, &w, &m);
  for (i = 0; i < h; i++) {
    scanf("%s", s);
    for (j = 0; j < w; j++) {
      if (s[j] == '#') {
        a[i][j] = 1;
      } else if (s[j] == 'S') {
        a[i][j] = 1;
        x = i;
        y = j;
      } else {
        a[i][j] = 0;
      }
    }
  }
  for (i = 0; i < h; i++) {
    for (j = 0; j < w; j++) {
      dp[i][j] = 0;
    }
  }
  search(x, y, m);
  ans = 2000000001;
  for (i = 0; i < h; i++) {
    for (j = 0; j < w; j++) {
      if (dp[i][j] == 1) {
        ans = ((ans) < (((((i) < (h - 1 - i) ? (i) : (h - 1 - i))) <
                                 (((j) < (w - 1 - j) ? (j) : (w - 1 - j)))
                             ? (((i) < (h - 1 - i) ? (i) : (h - 1 - i)))
                             : (((j) < (w - 1 - j) ? (j) : (w - 1 - j)))))
                   ? (ans)
                   : (((((i) < (h - 1 - i) ? (i) : (h - 1 - i))) <
                               (((j) < (w - 1 - j) ? (j) : (w - 1 - j)))
                           ? (((i) < (h - 1 - i) ? (i) : (h - 1 - i)))
                           : (((j) < (w - 1 - j) ? (j) : (w - 1 - j))))));
      }
    }
  }
  printf("%d", (ans + m - 1) / m + 1);
  return 0;
}
