/*
先找出纵向连续白色格子最多的地方,然后得分就是纵向填充红色格子数-1,比如有纵向有5个白色格子,那得分就是5-1,直到用完k次数为止
*/
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String line = in.nextLine();
String[] nums = line.split(" ");
int n = Integer.valueOf(nums[0]);
int m = Integer.valueOf(nums[1]);
int k = Integer.valueOf(nums[2]);
char[][] arr = new char[n][m];
// 录入数据
for (int a = 0; a < n; a++) {
String sub = in.nextLine();
arr[a] = sub.toCharArray();
}
int score = 0;
// 如果只要一行,那就是0分
if (arr.length <= 1) {
System.out.println(0);
return;
}
// 优先找连续白色最多的列
List<Integer> list = new ArrayList<>();
for (int j = 0; j < m; j++) {
int count = 0;
for (int i = 0; i < n; i++) {
char g = arr[i][j];
if (g == 'o') {
count++;
if (i == n - 1) {
list.add(count);
}
} else {
// 不是白色格子,则保存上次的计数
if (count > 0) {
list.add(count);
// 清零,开始下次计数
count = 0;
}
}
}
}
// 给list反向排序
Collections.sort(list, (i1, i2)-> {
return i2.compareTo(i1);
});
for (Integer item : list) {
int jianshu = k - item;
if (jianshu <= 0) {
// 已经超出k次了,那只能操作k次
// 操作k次,得分是k - 1
score += k - 1;
break;
}
// 还没超出k次,那就可以操作item次
k = jianshu;
// 操作item次,得分是item - 1
score += item - 1;
}
System.out.println(score);
}
}