local mmi = math.min
local h, w, k = io.read("*n", "*n", "*n", "*l")
local t = {}
local inf = 1000000007
local spos = 0
local len = {}
for i = 1, h do
  local str = io.read()
  for j = 1, w do
    local idx = (i - 1) * w + j
    local ss = str:sub(j, j)
    t[idx] = not (ss == "#")
    len[idx] = inf
    if ss == "S" then
      spos = idx
    end
  end
end

local taskstate = {}
for i = 1, h * w do taskstate[i] = false end
local tasks = {}
local tasknum = 0
local done = 0
local tasklim = h * w

local function addtask(idx)
  if not taskstate[idx] then
    taskstate[idx] = true
    tasknum = tasknum + 1
    local taskidx = tasknum % tasklim
    if taskidx == 0 then taskidx = tasklim end
    tasks[taskidx] = idx
  end
end

local function walk(src, dst)
  if t[dst] and len[src] < k and len[src] + 1 < len[dst] then
    len[dst] = len[src] + 1
    addtask(dst)
  end
end

len[spos] = 0
addtask(spos)

while done < tasknum do
  done = done + 1
  local taskidx = done % tasklim
  if taskidx == 0 then taskidx = tasklim end
  local idx = tasks[taskidx]
  taskstate[idx] = false

  if w < idx then walk(idx, idx - w) end
  if idx <= (h - 1) * w then walk(idx, idx + w) end
  if idx % w ~= 0 then walk(idx, idx + 1) end
  if idx % w ~= 1 then walk(idx, idx - 1) end
end

local ret = inf

for i = 1, h do
  for j = 1, w do
    local idx = (i - 1) * w + j
    if len[idx] <= k then
      local cand = mmi(i - 1, h - i)
      cand = mmi(cand, j - 1)
      cand = mmi(cand, w - j)
      ret = mmi(ret, 1 + math.ceil(cand / k))
    end
  end
end
print(ret)
