# The slowest submission that should be accepted. Uses a naive algorithm to # simulate the grid for the first 40 steps. Then it actually does the addition # step by step. n, m, k = [int(x) for x in input().split()] start = [input() for _ in range(n)] grid = [[False]*100 for _ in range(100)] for i in range(n): for j in range(m): grid[i+40][j+40] = start[i][j] == '#' num_brute = 40 area = sum(sum(1 for i in range(100) if s[i]) for s in grid) areas = [area] for step in range(num_brute): new_grid = [[False]*100 for _ in range(100)] for i in range(100): for j in range(100): for di in range(i-1, i+2): if di >= 0 and di < 100: for dj in range(j-1, j+2): if dj >= 0 and dj < 100: new_grid[i][j] |= grid[di][dj] grid = new_grid area = sum(sum(1 for i in range(100) if s[i]) for s in grid) areas.append(area) gap1 = areas[-1] - areas[-2] gap2 = areas[-2] - areas[-3] gapgap = gap1 - gap2 cur_step = gap1 while len(areas) <= k: cur_step += gapgap areas.append(areas[-1] + cur_step) print(areas[k])