#include<iostream>
#include<queue>
#include<cmath>
#define int long long
using namespace std;
int n,m,k;
char mp[888][888];
int vis[888][888];
int si=0,sj=0;
const int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
struct s{
int a,b,step;
};
int ans=0x7f7f7f7f7f7f7f7f;
void bfs(){
queue<s> q;
q.push({si,sj,0});
vis[si][sj]=1;
while(!q.empty()){
s t=q.front();
q.pop();
if(t.step>k)continue;
ans=min(t.a,min(n-t.a-1,min(t.b,m-t.b-1)));
for(int i=0;i<4;i++){
int nx=t.a+dx[i],ny=t.b+dy[i];
if(nx<0||nx>=n||ny<0||ny>=m||vis[nx][ny]||mp[nx][ny]=='#')continue;
vis[nx][ny]=1;
q.push({nx,ny,t.step+1});
}
}
}
signed main(){
cin>>n>>m>>k;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>mp[i][j];
if(mp[i][j]=='S')si=i,sj=j;
}
}
bfs();
cout<<ceil(ans*1.0/(k*1.0))+1<<endl;
}
11WA 35AC