const Main = input => {
    input = input.split("\n");
    const hwk = input[0].split(" ").map(value => parseInt(value, 10));

    const h = hwk[0];
    const w = hwk[1];
    const k = hwk[2];

    const table = [];
    for(let i = 0; i < h; i++) {
        const row = input[i + 1].split("");
        table.push(row);
    }

    // !行と列を複数赤く塗ることも可!

    // nを2進数の文字列にして返す
    const toBinary = (n) => {
        return n.toString(2);
    }

    // true...skipする
    const skip = (num, digit) => {
        // 2進数に変換し，n桁になるように0パディング
        const bin = toBinary(num).padStart(digit, "0");
        
        const arr = [];
        for(let i = 0; i < bin.length; i++) {
            if(bin.charAt(i) === "1") {
                arr.push(true);
            } else {
                arr.push(false);
            }
        }

        return arr;
    }

    let result = 0;
    let blackNum;
    for(let bi = 0; bi < 2 ** h; bi++) {
        for(let bj = 0; bj < 2 ** w; bj++) {
            // スキップする行，列を設定
            const skipI = skip(bi, h);
            const skipJ = skip(bj, w);

            blackNum = 0;

            // 黒マスの数を調べる(スキップすることもある)
            for(let i = 0; i < h; i++) {
                for(let j = 0; j < w; j++) {
                    if(skipI[i] || skipJ[j]) continue;

                    if(table[i][j] === "#") blackNum++;
                }
            }

            if(blackNum === k) result++;
        }
    }

    console.log(result);
}
 
Main(require("fs").readFileSync("/dev/stdin", "utf8"));