n, m, k = [int(x) for x in input().split()]

start = [input() for _ in range(n)]

grid = [[False]*60 for _ in range(60)]

for i in range(n):
    for j in range(m):
        grid[i+20][j+20] = start[i][j] == '#'

num_brute = 20
area = sum(sum(1 for i in range(60) if s[i]) for s in grid)
areas = [area]

for step in range(num_brute):
    new_grid = [[False]*60 for _ in range(60)]
    for i in range(60):
        for j in range(60):
            for di in range(i-1, i+2):
                if di >= 0 and di < 60:
                    for dj in range(j-1, j+2):
                        if dj >= 0 and dj < 60:
                            new_grid[i][j] |= grid[di][dj]
    grid = new_grid
    area = sum(sum(1 for i in range(60) if s[i]) for s in grid)
    areas.append(area)

if k < len(areas):
    print(areas[k])
elif areas[0] == 0:
    print(0)
else:
    minx = min(i for i in range(60) if any(grid[i][j] for j in range(60)))
    maxx = max(i for i in range(60) if any(grid[i][j] for j in range(60)))
    miny = min(j for j in range(60) if any(grid[i][j] for i in range(60)))
    maxy = max(j for j in range(60) if any(grid[i][j] for i in range(60)))

    height = maxx - minx + 1
    width = maxy - miny + 1

    missing_from_corners = 0
    for i in range(minx, maxx+1):
        for j in range(miny, maxy+1):
            if not grid[i][j]:
                missing_from_corners += 1

    remaining_steps = k - len(areas) + 1
    height += 2*remaining_steps
    width += 2*remaining_steps

    print(height*width - missing_from_corners)
