using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO.Pipes;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;

namespace AtCoderWorkspace
{
    public class Solver
    {
        int w;
        int h;
        public void Solve()
        {
            var cin = new Scanner();
            h = cin.nextInt();
            w = cin.nextInt();
            var k = cin.nextInt();
            var f = new int[h, w];
            for (int i = 0; i < h; i++)
            {
                var s = cin.next().ToArray();
                for (int j = 0; j < w; j++)
                {                    
                    var ii = s[j] == '.' ? 0 : 1;
                    f[i, j] = ii;
                }
            }

            // bit全探索
            var N = h;
            var M = w;
            var ans = 0;
            for (int bit = 0; bit < (1 << N); bit++)
            {
                for (int ibit = 0; ibit < (1 << M); ibit++)
                {
                    var tmpf = Copy(f);

                    var hbit = new bool[h];
                    for (int i = 0; i < N; i++)
                    {
                        if ((bit & (1 << i)) > 0) hbit[i] = true;
                        else hbit[i] = false;
                    }

                    var wbit = new bool[w];
                    for (int i = 0; i < M; i++)
                    {
                        if ((ibit & (1 << i)) > 0) wbit[i] = true;
                        else wbit[i] = false;
                    }

                    // 処理
                    // 行
                    for (int i = 0; i < N; i++)
                    {
                        if (hbit[i])
                        {
                            for (int j = 0; j < w; j++)
                            {
                                tmpf[i, j] = 2;
                            }
                        }
                    }

                    // 列
                    for (int i = 0; i < M; i++)
                    {
                        if (wbit[i])
                        {
                            for (int j = 0; j < h; j++)
                            {
                                tmpf[j, i] = 2;
                            }
                        }
                    }

                    var count = Count(tmpf);
                    if (count == k) ans++;
                }
                
            }

            Console.WriteLine(ans);
        }

        int[,] Copy(int[,] ff)
        {
            var ret = new int[h,w];
            for (int i = 0; i < h; i++)
            {
                for (int j = 0; j < w; j++)
                {
                    ret[i, j] = ff[i, j];
                }
            }
            return ret;
        }

        int Count(int[,] ff)
        {
            var ret = 0;
            for (int i = 0; i < h; i++)
            {
                for (int j = 0; j < w; j++)
                {
                    if (ff[i, j] == 1) ret++;
                }
            }
            return ret;
        }
    }

    class Scanner
    {
        string[] s;
        int i;

        char[] cs = new char[] { ' ' };

        public Scanner()
        {
            s = new string[0];
            i = 0;
        }

        public string next()
        {
            if (i < s.Length) return s[i++];
            string st = Console.ReadLine();
            while (st == "") st = Console.ReadLine();
            s = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
            if (s.Length == 0) return next();
            i = 0;
            return s[i++];
        }

        public int nextInt()
        {
            return int.Parse(next());
        }
        public int[] ArrayInt(int N, int add = 0)
        {
            int[] Array = new int[N];
            for (int i = 0; i < N; i++)
            {
                Array[i] = nextInt() + add;
            }
            return Array;
        }

        public int[] DPArrayInt(int N, int ex)
        {
            int[] Array = new int[N + ex];
            for (int i = 0; i < N; i++)
            {
                Array[i] = nextInt();
            }
            return Array;
        }

        public long nextLong()
        {
            return long.Parse(next());
        }

        public long[] ArrayLong(int N, long add = 0)
        {
            long[] Array = new long[N];
            for (int i = 0; i < N; i++)
            {
                Array[i] = nextLong() + add;
            }
            return Array;
        }

        public long[] DPArrayLong(int N, int ex)
        {
            long[] Array = new long[N + ex];
            for (int i = 0; i < N; i++)
            {
                Array[i] = nextLong();
            }
            return Array;
        }

        public double nextDouble()
        {
            return double.Parse(next());
        }


        public double[] ArrayDouble(int N, double add = 0)
        {
            double[] Array = new double[N];
            for (int i = 0; i < N; i++)
            {
                Array[i] = nextDouble() + add;
            }
            return Array;
        }
    }

    class Program
    {
        static void Main(string[] s) => new Solver().Solve();
    }
}


Measured memory_bytes: 28900