#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt" , "r" , stdin);
freopen("output.txt" , "w" , stdout);
#endif
ll n, m, k;
cin >> n >> m >> k;
vector<string> mat(n);
vector<ll> start, end;
for (ll i = 0; i < n; i++) {
string s = "";
for (ll j = 0; j < m; j++) {
char c;
cin >> c;
s += c;
if (c == 'S') {
start = {i, j};
}
if (c == 'G') {
end = {i, j};
}
}
mat[i] = s;
}
vector<vector<ll>> dis(n, vector<ll>(m, 1e9));
vector<vector<vector<bool>>> vis(n, vector<vector<bool>>(m, vector<bool>(k + 1, false)));
dis[start[0]][start[1]] = 0;
vis[start[0]][start[1]][k] = true;
queue<pair<pair<ll, ll>, ll>> q;
q.push({{start[0], start[1]}, k});
while (!q.empty()) {
auto v = q.front();
q.pop();
ll x = v.first.first;
ll y = v.first.second;
ll remaining = v.second;
if(x == end[0] && y == end[1]){
break;
}
vector<vector<ll>> dir{{1, 0}, {0, 1}, { -1, 0}, {0, -1}};
for (auto it : dir) {
ll a = x + it[0];
ll b = y + it[1];
if (a >= 0 && b >= 0 && a < n && b < m && !vis[a][b][remaining]) {
if (mat[a][b] == '#') {
if (remaining > 0) {
dis[a][b] = min(dis[a][b], 1 + dis[x][y]);
q.push({{a, b}, remaining - 1});
vis[a][b][remaining - 1] = true;
}
} else {
dis[a][b] = min(dis[a][b], 1 + dis[x][y]);
q.push({{a, b}, remaining});
vis[a][b][remaining] = true;
}
}
}
}
cout << (dis[end[0]][end[1]] == 1e9 ? -1 : dis[end[0]][end[1]]) << '\n';
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiICwgInIiICwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIgLCAidyIgLCBzdGRvdXQpOwojZW5kaWYKICAgIGxsIG4sIG0sIGs7CiAgICBjaW4gPj4gbiA+PiBtID4+IGs7CiAgICB2ZWN0b3I8c3RyaW5nPiBtYXQobik7CiAgICB2ZWN0b3I8bGw+IHN0YXJ0LCBlbmQ7CiAgICBmb3IgKGxsIGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgc3RyaW5nIHMgPSAiIjsKICAgICAgICBmb3IgKGxsIGogPSAwOyBqIDwgbTsgaisrKSB7CiAgICAgICAgICAgIGNoYXIgYzsKICAgICAgICAgICAgY2luID4+IGM7CiAgICAgICAgICAgIHMgKz0gYzsKICAgICAgICAgICAgaWYgKGMgPT0gJ1MnKSB7CiAgICAgICAgICAgICAgICBzdGFydCA9IHtpLCBqfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYyA9PSAnRycpIHsKICAgICAgICAgICAgICAgIGVuZCA9IHtpLCBqfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBtYXRbaV0gPSBzOwogICAgfQoKICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PiBkaXMobiwgdmVjdG9yPGxsPihtLCAxZTkpKTsKICAgIHZlY3Rvcjx2ZWN0b3I8dmVjdG9yPGJvb2w+Pj4gdmlzKG4sIHZlY3Rvcjx2ZWN0b3I8Ym9vbD4+KG0sIHZlY3Rvcjxib29sPihrICsgMSwgZmFsc2UpKSk7CgogICAgZGlzW3N0YXJ0WzBdXVtzdGFydFsxXV0gPSAwOwogICAgdmlzW3N0YXJ0WzBdXVtzdGFydFsxXV1ba10gPSB0cnVlOwogICAgcXVldWU8cGFpcjxwYWlyPGxsLCBsbD4sIGxsPj4gcTsKICAgIHEucHVzaCh7e3N0YXJ0WzBdLCBzdGFydFsxXX0sIGt9KTsKCiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIGF1dG8gdiA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGxsIHggPSB2LmZpcnN0LmZpcnN0OwogICAgICAgIGxsIHkgPSB2LmZpcnN0LnNlY29uZDsKICAgICAgICBsbCByZW1haW5pbmcgPSB2LnNlY29uZDsKICAgICAgICBpZih4ID09IGVuZFswXSAmJiB5ID09IGVuZFsxXSl7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgdmVjdG9yPHZlY3RvcjxsbD4+IGRpcnt7MSwgMH0sIHswLCAxfSwgeyAtMSwgMH0sIHswLCAtMX19OwoKICAgICAgICBmb3IgKGF1dG8gaXQgOiBkaXIpIHsKICAgICAgICAgICAgbGwgYSA9IHggKyBpdFswXTsKICAgICAgICAgICAgbGwgYiA9IHkgKyBpdFsxXTsKICAgICAgICAgICAgaWYgKGEgPj0gMCAmJiBiID49IDAgJiYgYSA8IG4gJiYgYiA8IG0gJiYgIXZpc1thXVtiXVtyZW1haW5pbmddKSB7CiAgICAgICAgICAgICAgICBpZiAobWF0W2FdW2JdID09ICcjJykgewogICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc1thXVtiXSA9IG1pbihkaXNbYV1bYl0sIDEgKyBkaXNbeF1beV0pOwogICAgICAgICAgICAgICAgICAgICAgICBxLnB1c2goe3thLCBifSwgcmVtYWluaW5nIC0gMX0pOwogICAgICAgICAgICAgICAgICAgICAgICB2aXNbYV1bYl1bcmVtYWluaW5nIC0gMV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZGlzW2FdW2JdID0gbWluKGRpc1thXVtiXSwgMSArIGRpc1t4XVt5XSk7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHt7YSwgYn0sIHJlbWFpbmluZ30pOwogICAgICAgICAgICAgICAgICAgIHZpc1thXVtiXVtyZW1haW5pbmddID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IChkaXNbZW5kWzBdXVtlbmRbMV1dID09IDFlOSA/IC0xIDogZGlzW2VuZFswXV1bZW5kWzFdXSkgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9Cg==