function main(input) {
  const [ h, w, k ] = input[0].trim().split(" ").map(i => parseInt(i));
  const c = [];
  for(let i=0;i<h;i++){
    c[i] = new Array(w);
    c[i] = input[i+1].trim().split("");
  }

  const H = new Array(h).fill(null).map((a, i) => i+1);
  const W = new Array(w).fill(null).map((a, i) => i+1);

  let h_pat = [[]];
  let w_pat = [[]];

  for(let i=1;i<=h;i++){
    h_pat = h_pat.concat(kumiawase(H, i));
  }

  for(let i=1;i<=w;i++){
    w_pat = w_pat.concat(kumiawase(W, i));
  }

  let count = 0;

  for(let i=0;i<h_pat.length;i++){
    for(let j=0;j<w_pat.length;j++){
      let cnt = 0;
      for(let l=1;l<=c.length;l++){
        if(!(h_pat[i].includes(l))){
          for(let s=1;s<=w;s++){
            if(!(w_pat[j].includes(s))){
              if(c[l-1][s-1]==="#"){
                cnt++;
              }
            }
          }
        }
      }
      if(cnt === k){
        count++;
      }
    }
  }
  console.log(count);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8').trim().split("\n"));

function kumiawase(balls, nukitorisu){
  var arrs, i, j, zensu, kumis;
  arrs = [];
  zensu = balls.length;
  if(zensu < nukitorisu){
    return;
  }else if(nukitorisu == 1){
    for(i = 0; i < zensu; i++){
      arrs[i] = [balls[i]];
    }
  }else{
    for(i = 0; i < zensu - nukitorisu + 1; i ++){
      kumis = kumiawase(balls.slice(i + 1), nukitorisu - 1);
      for(j = 0; j < kumis.length; j ++){
        arrs.push([balls[i]].concat(kumis[j]));
      }
    }
  }
  return arrs;
}