#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10;
const int MSIZE = 1 << MAXN;
int n;
bool adj[MAXN][MAXN];
int ways[MSIZE][MSIZE];
int cnt(int x) {
  int ans = 0;
  while (x) {
    ans += x % 2;
    x /= 2;
  }
  return ans;
}
void proc(int ALL, int DE) {
  vector<int> all, de;
  for (int i = 0; i < n; ++i) {
    if ((ALL >> i) % 2) all.push_back(i);
    if ((DE >> i) % 2) de.push_back(i);
  }
  if (all.size() == 2) {
    if (de == all and adj[all[0]][all[1]])
      ways[ALL][DE] = 1;
    else
      ways[ALL][DE] = 0;
    return;
  }
  int h = de[0];
  int ans = 0;
  for (int i = 0; i < n; ++i)
    if ((adj[h][i] == 1) and ((DE | (1 << i)) != DE) and
        ((ALL | (1 << i)) == ALL))
      ans += ways[ALL ^ (1 << h)][DE ^ (1 << h)] +
             ways[ALL ^ (1 << h)][DE ^ (1 << h) ^ (1 << i)];
  ways[ALL][DE] = ans;
}
int main() {
  int m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < m; ++i) {
    int u, v;
    cin >> u >> v;
    u--;
    --v;
    adj[u][v] = adj[v][u] = 1;
  }
  int total = 0;
  for (int ALL = 0; ALL < (1 << n); ++ALL)
    for (int DE = 0; DE < (1 << n); DE++)
      if (((ALL | DE) == ALL) and cnt(DE) >= 2) proc(ALL, DE);
  for (int i = 0; i < (1 << n); ++i)
    if (cnt(i) == k) total += ways[(1 << n) - 1][i];
  cout << fixed << total << endl;
  return 0;
}
