#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int dp[(1 << N) + 5][(1 << N) + 5];
bool e[N][N];
int res;
vector<int> G[N];
long long ans;
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    G[u].push_back(v);
    G[v].push_back(u);
    e[u][v] = 1;
    e[v][u] = 1;
    dp[(1 << u) + (1 << v)][(1 << u) + (1 << v)] = 1;
  }
  for (int i = 1; i < (1 << n); i++) {
    if (__builtin_popcount(i) < 3) continue;
    for (int j = 1; j < (1 << n); j++) {
      if ((i & j) != j) continue;
      for (int k = 0; k < n; k++) {
        if ((1 << k) & j) {
          res = k;
          break;
        }
      }
      for (auto k : G[res])
        if (((1 << k) & i) && ((1 << k) & j) == 0)
          dp[i][j] += dp[i - (1 << res)][j - (1 << res)] +
                      dp[i - (1 << res)][j - (1 << res) + (1 << k)];
    }
  }
  int mask = 1 << n;
  for (int i = 0; i < mask; i++) {
    if (__builtin_popcount(i) == k) ans += dp[mask - 1][i];
  }
  cout << ans;
}
