#include<bits/stdc++.h>
#define fi first
#define se second
#define mk make_pair
#define r(i,n) for(int i=0;i<n;i++)
using namespace std;
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int main(){
  int h,w,k,sx,sy;
  cin>>h>>w>>k;
  string s[h];
  r(i,h)cin>>s[i];
  r(i,h)r(j,w)if(s[i][j]=='S')sy=i,sx=j;
  int a[h][w]={},used[h][w];
  //if(sy==0||sx==0||sy==h-1||sx==w-1){cout<<0<<endl;goto L;}
  for(int o=1;o<100;o++){
    queue<pair<int,int> >qq;
    qq.push(mk(sy,sx));
    memset(used,0,sizeof(used));
    used[sy][sx]=1;
    while(!qq.empty()){
      pair<int,int>p=qq.front();qq.pop();
      if(p.fi==0||p.fi==h-1||p.se==0||p.se==w-1){
        cout<<o<<endl;
        goto L;
      }
      r(i,4){
        int x=p.fi+dx[i],y=p.se+dx[i];
        if(x>=0&&y>=0&&y<h&&x<w)
          if(!used[y][x]){
            if(s[y][x]=='.'){
              used[y][x]=1;
              qq.push(mk(y,x));
            }
          }
      }
    }
    memset(used,0,sizeof(used));
    queue<pair<pair<int,int>,int> >q;
    q.push(mk(mk(sy,sx),0));
    used[sy][sx]=1;
    while(!q.empty()){
      pair<pair<int,int>,int>p=q.front();q.pop();
      if(p.second>=k)continue;
      r(i,4){
        int x=p.fi.se+dx[i],y=p.fi.fi+dx[i];
        if(x>=0&&y>=0&&y<h&&x<w)
          if(!used[y][x]){
            if(s[y][x]=='.'){
              used[y][x]=1;
              q.push(mk(mk(y,x),p.se));
            }
            else{
              used[y][x]=1;
              s[y][x]='.';
              q.push(mk(mk(y,x),p.se+1));
            }
          }
      }
    }
  }
  L:;
}