#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
long long g[12][12];
long long dp[1 << 10][1 << 10];
long long ans;
signed main() {
  cin >> n >> m >> k;
  for (long long i = 1; i <= m; i++) {
    long long x, y;
    cin >> x >> y;
    x--, y--;
    g[x][y] = g[y][x] = 1;
    dp[(1 << x) + (1 << y)][(1 << x) + (1 << y)] = 1;
  }
  for (long long msk1 = 0; msk1 < (1 << n); msk1++)
    for (long long msk2 = 0; msk2 < (1 << n); msk2++)
      if (dp[msk1][msk2])
        for (long long a = 0; a < n; a++)
          if (msk1 & (1 << a))
            for (long long b = 0; b < n; b++)
              if (g[a][b] && !(msk1 & (1 << b))) {
                bool flag = 1;
                for (long long i = b + 1; i < n; i++)
                  if (i != a && (msk2 & (1 << i))) flag = 0;
                if (flag)
                  dp[msk1 | (1 << b)][(msk2 | (1 << b)) & (~(1 << a))] +=
                      dp[msk1][msk2];
              }
  for (long long msk2 = 0; msk2 < (1 << n); msk2++) {
    long long cnt = 0;
    for (long long j = 0; j < n; j++)
      if (msk2 & (1 << j)) cnt++;
    if (cnt == k) ans += dp[(1 << n) - 1][msk2];
  }
  cout << ans << endl;
  return 0;
}
