/*
先找出纵向连续白色格子最多的地方,然后得分就是纵向填充红色格子数-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);
    }
}