#include <bits/stdc++.h>
using namespace std;
 
struct P {
  int x,y,p,q,z;
};
 
int d[101][101][15][15][4];
int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
 
bool check(int n, int m, int x, int y) {
  return (x>=0&&x<n&&y>=0&&y<m);
}
 
int main() {
  int n,m,k,INF=1<<29;
  cin >> n >> m >> k;
  string s[n];
  int gx,gy,sx,sy;
  for(int i=0; i<n; i++) {
    cin >> s[i];
    for(int j=0; j<m; j++) {
      if(s[i][j]=='G') {
    gx=i;gy=j;
      }
      if(s[i][j]=='S') {
    sx=i;sy=j;
      }
    }
  }
  for(int i=0; i<101; i++)for(int j=0;j<101;j++)for(int ii=0; ii<15;ii++)for(int iii=0;iii<15;iii++)for(int jj=0;jj<4;jj++) d[i][j][ii][iii][jj]=INF;
  d[sx][sy][k][k][2]=0;
   
  deque<P> que;
  que.push_back((P){sx,sy,k,k,2});
  while(!que.empty()) {
    P t=que.front();que.pop_front();
    int nx=t.x,ny=t.y;
    if(s[nx][ny]=='G' || (s[nx][ny]=='S'&&t.z==0)) continue;
    int x=nx+dx[t.z],y=ny+dy[t.z];
    if(check(n,m,x,y) && s[x][y]!='#') {
      if(d[x][y][t.p][t.q][t.z]>d[nx][ny][t.p][t.q][t.z]) {
        que.push_front((P){x,y,t.p,t.q,t.z});
        d[x][y][t.p][t.q][t.z]=d[nx][ny][t.p][t.q][t.z];
      }
    }
    if(s[nx][ny]=='S') continue;
    int a=1;
    if(t.z%2) a=3;
    if(t.p) {
      x=nx+dx[(t.z+a)%4],y=ny+dy[(t.z+a)%4];
      if(check(n,m,x,y) && s[x][y]!='#') {
        if(d[x][y][t.p-1][t.q][(t.z+a)%4]>d[nx][ny][t.p][t.q][t.z]+1) {
          que.push_back((P){x,y,t.p-1,t.q,(t.z+a)%4});
          d[x][y][t.p-1][t.q][(t.z+a)%4]=d[nx][ny][t.p][t.q][t.z]+1;
        }
      }
    }
    a=(a+2)%4;
    if(t.q) {
      x=nx+dx[(t.z+a)%4],y=ny+dy[(t.z+a)%4];
      if(check(n,m,x,y) && s[x][y]!='#') {
        if(d[x][y][t.p][t.q-1][(t.z+a)%4]>d[nx][ny][t.p][t.q][t.z]+1) {
          que.push_back((P){x,y,t.p,t.q-1,(t.z+a)%4});
          d[x][y][t.p][t.q-1][(t.z+a)%4]=d[nx][ny][t.p][t.q][t.z]+1;
        }
      }
    }
  }
  int ans=INF;
  for(int i=0; i<=k; i++) {
    for(int j=0; j<=k; j++) {
      for(int l=0; l<4; l++) ans=min(ans,d[gx][gy][i][j][l]);
    }
  }
  if(ans==INF) cout << "-1" << endl;
  else cout << ans << endl;
  return 0;
}
