using System;
using System.Collections.Generic;
using System.Linq;

namespace atcoder173
{
    class Program
    {
        static void Main(string[] args)
        {

            var list = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
            var H = list[0]; // 行数
            var W = list[1]; // 列数
            var K = list[2]; // 期待する黒の個数

            string[,] field = new string[H, W];
            for (int i = 0; i < H; i++)
            {
                var buf = Console.ReadLine();
                for (int j = 0; j < W; j++){
                    field[i, j] = buf[j].ToString();
                }
            }

            int ans = 0;

            // rowBitCounter
            // どの行を選ぶか全ての組み合わせ数を定義する
            // 行を選ぶ選ばない含め全種類を試すため(1 << H)通り
            // 例えばHが2ならどの行も選ばない、0行を選ぶ、1行を選ぶ、0と1行を選ぶで4通り
            for (int rowBitCounter = 0; rowBitCounter < 1 << H; rowBitCounter++)
            {
                var selectedRowBitNums = new List<int>();

                // どの行を赤く塗りつぶすかを決めて、塗りつぶす行をselectedRowBitNumsに追加する
                // (1 << i)がBitでの行を表している
                // 例えばHが2なら(1 << i)が01,10の2通りでこれは0列目,1列目を表す(iがちょうど列番号になる)
                // rowBitCounterはどの行を選ぶかが決まるためrowBitCounterが0の時は下1桁は0でどの行も選ばない
                // rowBitCounterが1の時は下1桁が1なので、下1桁が1である01(0列目)が選ばれ、0列目(i)がselectedRowBitNumsに格納される
                for (int i = 0; i < H; i++){
                    if ((rowBitCounter & (1 << i)) != 0){
                        selectedRowBitNums.Add(i);                     
                    }
                }

                // columnBitCounter
                // どの列を選ぶか全ての組み合わせ数を定義する
                // 列を選ぶ選ばない含め全種類を試すため(1 << W)通り
                for (int columnBitCounter = 0; columnBitCounter < 1 << W; columnBitCounter++)
                {
                    var selectedColumnBitNums = new List<int>();

                    // どの列を赤く塗りつぶすかを決めて、塗りつぶす列をselectedRowBitNumsに追加する
                    // (1 << i)がBitでの列を表している
                    for (int i = 0; i < W; i++){
                        if ((columnBitCounter & (1 << i)) != 0){
                            selectedColumnBitNums.Add(i);
                        }
                    }

                    var fieldForCalculation = (string[,])field.Clone();

                    // 選択した行番号は赤で塗りつぶすためrで置き換える
                    foreach (var v in selectedRowBitNums){
                        for (int i = 0; i < W; i++){
                            fieldForCalculation[v, i] = "r";
                        }
                    }


                    foreach (var v in selectedColumnBitNums){
                        for (int i = 0; i < H; i++){
                            fieldForCalculation[i, v] = "r";
                        }
                    }
                    
                    int blackNum = 0;
                    for (int i = 0; i < fieldForCalculation.GetLength(0); i++){
                        for (int j = 0; j < fieldForCalculation.GetLength(1); j++){
                            if (fieldForCalculation[i, j] == "#") blackNum++;
                        }
                    }

                    if (blackNum == K) ans++;
                }

            }

            Console.WriteLine(ans);
        }
    }
}

Measured memory_bytes: 29980