#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10;
int n, m, k;
bool mat[MAXN][MAXN];
long long dp[1 << MAXN][1 << MAXN];
long long calc(int x, int y) {
  if (__builtin_popcount(y) < 2) return 0;
  long long& ret = dp[x][y];
  if (ret != -1) return ret;
  ret = 0;
  int p = __builtin_ctz(y);
  for (int i = 0, _i = (n); i < _i; ++i)
    if (x & 1 << i)
      if (!(y & 1 << i))
        if (mat[p][i])
          ret += calc(x ^ 1 << p, y ^ 1 << p) +
                 calc(x ^ 1 << p, y ^ 1 << p ^ 1 << i);
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  if (fopen("input.txt", "r")) freopen("input.txt", "r", stdin);
  cin >> n >> m >> k;
  for (int i = 0, _i = (m); i < _i; ++i) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    mat[a][b] = mat[b][a] = 1;
  }
  memset(dp, -1, sizeof(dp));
  for (int i = 0, _i = (1 << n); i < _i; ++i)
    for (int j = 0, _j = (1 << n); j < _j; ++j)
      if (__builtin_popcount(i) <= 2) dp[i][j] = 0;
  for (int i = 0, _i = (n); i < _i; ++i)
    for (int j = 0, _j = (n); j < _j; ++j)
      if (i != j)
        if (mat[i][j]) dp[1 << i | 1 << j][1 << i | 1 << j] = 1;
  long long ans = 0;
  for (int i = 0, _i = (1 << n); i < _i; ++i)
    if (__builtin_popcount(i) == k) ans += calc((1 << n) - 1, i);
  cout << ans << '\n';
  return 0;
}
