import sys
def solve():
input = sys.stdin.readline
n, m, k = list(map(int, input().split()))
grid = [list(input().strip()) for _ in range(n)]
st = [[False] * m for _ in range(n)]
def dfs(i, j):
st[i][j] = True
size = 1
x, y = i + 1, j
if 0 <= x < n and not st[x][y] and grid[x][y] == "o":
size += dfs(x, y)
return size
sizes = []
for i, row in enumerate(grid):
for j, ch in enumerate(row):
if ch == 'o' and not st[i][j]:
size = dfs(i, j)
sizes.append(size)
res = 0
sizes.sort(reverse=True)
for size in sizes:
if k >= size:
k -= size
res += size-1
else:
if k >= 2:
res += k - 1
k = 0
break
print(res)
solve()