#include <bits/stdc++.h>
using namespace std;
int g[12][12], dp[1025][1025], n, m, K;
int cal(int x) {
  int res = 0;
  while (x) {
    res++;
    x -= x & (-x);
  }
  return res;
}
int main() {
  int i, j, k, s, u, v;
  while (scanf("%d%d%d", &n, &m, &K) != EOF) {
    memset(g, 0, sizeof(g));
    memset(dp, 0, sizeof(dp));
    while (m--) {
      scanf("%d%d", &i, &j);
      i--;
      j--;
      g[i][j] = g[j][i] = 1;
      dp[(1 << i) | (1 << j)][(1 << i) | (1 << j)] = 1;
    }
    for (i = 0; i < (1 << n); i++) {
      for (s = i; s; s = (s - 1) & i) {
        for (u = 0; u < n; u++) {
          if ((1 << u) & i) {
            for (v = 0; v < n; v++) {
              if (((1 << v) & i) == 0 && g[u][v]) {
                int ni = i | (1 << v);
                int ns = s | (1 << v);
                if (s & (1 << u)) ns ^= (1 << u);
                if ((ns & ((1 << v) - 1)) == 0) dp[ni][ns] += dp[i][s];
              }
            }
          }
        }
      }
    }
    int res = 0;
    for (i = 0; i < (1 << n); i++) {
      if (cal(i) == K) res += dp[(1 << n) - 1][i];
    }
    cout << res << endl;
  }
  return 0;
}
