#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<typename x>
using ordered_set = tree<x,null_type,less<x>,rb_tree_tag,tree_order_statistics_node_update>;
#define sorta(a,n) sort(a,a+n)
#define sortad(a,n) sort(a,a+n,greater<__typeof(a[0])>())
#define all(x) (x).begin(),(x).end()
#define ms0(x) memset((x),0,sizeof((x)))
#define ms1(x) memset((x),-1,sizeof((x)))
typedef pair<int,int> pi;
#define inarr(arr,n) for(int i=0;i<n;i++)cin>>arr[i];
#define prinarr(arr) {for(int x:arr)cout<<x<<" ";} cout<<"\n";
#define cout1(a) cout<<a<<"\n";
#define cout2(a,b) cout<<a<<" "<<b<<"\n";
#define cout3(a,b,c) cout<<a<<" "<<b<<" "<<c<<"\n";
#define setpre(n) cout<<fixed<<setprecision(8)<<n<<"\n";
#define filldp(arr,n,m,k) for(int i=0;i<n;i++){for(int j=0;j<m;j++) arr[i][j]=k;}

#define mod 1000000007
#define mod1 998244353


vector<vector<int>> adj;
vector<int> dis;
vector<int> parent;
vector<bool> visited;

void newgr(int n){
    n+=10;
    adj=vector<vector<int>>(n);
    dis=vector<int>(n,0);
    //parent=vector<int>(n,-1);
    visited=vector<bool>(n,false);
}

void dfs(int s){
    visited[s]=true;
    for(auto u:adj[s]){
        if(!visited[u]){
            //parent[u]=s;
            dis[u]=dis[s]+1;
            dfs(u);
        }
    }
}

void bfs(int s){
    queue<int> q;
    q.push(s);
    visited[s]=true;
    dis[s]=0;
    while(!q.empty()){
        auto u=q.front();
        q.pop();
        for(auto x:adj[u]){
            if(!visited[x]){
                //parent[x]=u;
                visited[x]=true;
                dis[x]=dis[u]+1;
                q.push(x);
            }
        }
    }
}

long long power(long long x,long long y){  
    long long ans=1;
    x%=mod;
    while(y>0){
        if(y&1) ans=(ans*x)%mod;
        y>>=1;
        x=(x*x)%mod;
    }
    return ans;
}

long long modinv(long long b){ 
    return power(b,mod-2);
}



int main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int h,w,k;
	cin>>h>>w>>k;
    vector<vector<int>> r,c;
	vector<int> aise;
	aise.push_back(0);
	r.push_back(aise);
	c.push_back(aise);
	for(int i=1;i<h;i++){
		int n=r.size();
		for(int j=0;j<n;j++){
			auto p=r[j];
			p.push_back(i);
			r.push_back(p);
		}
        vector<int> qq;
        qq.push_back(i);
        r.push_back(qq);
	}

	for(int i=1;i<w;i++){
		int n=c.size();
		for(int j=0;j<n;j++){
			auto p=c[j];
			p.push_back(i);
			c.push_back(p);
		}
        vector<int> qq;
        qq.push_back(i);
        c.push_back(qq);
	}

    char dp[h][w],co[h][w],co1[h][w];
    int ki=0;
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++){
            cin>>dp[i][j];
            if(dp[i][j]=='#')ki++;
        }
    }
    int ans=0;
    if(ki==k){
        ans++;
    }
    for(auto x:r){
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                co[i][j]=dp[i][j];
            }
        }
        for(int y:x){
            for(int i=0;i<w;i++){
                co[y][i]='.';
            }
        }
        ki=0;
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                if(co[i][j]=='#')ki++;
            }
        }
        if(ki==k){
            ans++;
        }
    }


    for(auto x:c){
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                co[i][j]=dp[i][j];
            }
        }
        for(int y:x){
            for(int i=0;i<h;i++){
                co[i][y]='.';
            }
        }
        ki=0;
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                if(co[i][j]=='#')ki++;
            }
        }
        if(ki==k){
            ans++;
        }
    }


    for(auto x:c){
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                co[i][j]=dp[i][j];
            }
        }
        for(int y:x){
            for(int i=0;i<h;i++){
                co[i][y]='.';
            }
        }
        for(auto x1:r){
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                co1[i][j]=co[i][j];
            }
        }
        for(int y:x1){
            for(int i=0;i<w;i++){
                co1[y][i]='.';
            }
        }
        ki=0;
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                if(co1[i][j]=='#')ki++;
            }
        }
        if(ki==k){
            ans++;
        }
    }
        
    }
   cout1(ans);
 //  cout2(r.size(),c.size());



    return 0;
}

Measured memory_bytes: 3660