#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define poq pop_back
#define tof ios_base :: sync_with_stdio(NULL);cin.tie(0);cout.tie(0)




using namespace std;

char  y[809][809];
bool viz[809][809];
bool vizz[809][809];

int main()
{
    ll h,w,k,X,Y;
    cin»h»w»k;
    for (ll i=0; i<h; i++)
    {
        for (ll j=0; j<w; j++)
        {
            cin»y[i][j];
            if (y[i][j]=='S')
            {
                X=i;
                Y=j;
            }
        }
    }
    stack<pair<ll,ll> > stk;
    stack<pair<ll,ll>  >sttk;
    stack<pair<ll,ll>  >stttk;
    pair<ll,ll> v;
    stk.push(mp(X,Y));
    stttk.push(mp(X,Y));
    viz[X][Y]=1;


    ll ans=0;
    for (ll i=0; i<k; i++)
    {
        while(!stk.empty())
        {
            v=stk.top();
            if (v.F>0)
            {
                if (y[v.F-1][v.S]!='#')
                {
                    sttk.push(mp(v.F-1,v.S));
                }
            }
            else
            {
                cout«1;
                return 0;
            }
            if (v.F<h-1)
            {
                if (y[v.F+1][v.S]!='#')
                {
                    sttk.push(mp(v.F+1,v.S));
                }
            }
            else
            {
                cout«1;
                return 0;
            }
            if (v.S>0)
            {
                if (y[v.F][v.S-1]!='#')
                {
                    sttk.push(mp(v.F,v.S-1));
                }
            }
            else
            {
                cout«1;
                return 0;
            }
            if (v.S<w-1)
            {
                if (y[v.F][v.S+1]!='#')
                {
                    sttk.push(mp(v.F,v.S+1));
                }
            }
            else
            {
                cout«1;
                return 0;
            }
            stk.pop();
        }
        while (!sttk.empty())
        {
            v=sttk.top();
            if (v.F==0||v.S==0||v.F==h-1||v.S==w-1)
            {
                cout«1;
                return 0;
            }
            if (!viz[v.F][v.S])
            {
                stk.push(v);
                stttk.push(v);
                viz[v.F][v.S]=1;
            }
            sttk.pop();
        }
    }
    ans=1e9;
    while (!stttk.empty())
    {
        v=stttk.top();
        ans=min(ans,v.F);
        ans=min(ans,v.S);
        ans=min(ans,w-1-v.S);
        ans=min(ans,h-1-v.F);
        stttk.pop();
    }
    if (ans%k==0)
    {
        cout«ans/k+1;
    }
    else
    {
        cout«ans/k+2;
    }
}