#include <bits/stdc++.h>
using namespace std;
const int MAX = 3e5 + 3;
const double eps = 1e-7;
vector<int> g[MAX];
int cnt[MAX];
long long bit[MAX];
int sz;
void update(int idx, long long val) {
  while (idx <= sz) {
    bit[idx] += val;
    idx += (idx & -idx);
  }
}
long long query(int R) {
  long long ret = 0;
  while (R > 0) {
    ret += bit[R];
    R -= (R & -R);
  }
  return ret;
}
long long query(int L, int R) { return query(R) - query(L - 1); }
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, p;
  cin >> n >> p;
  sz = n;
  for (int i = 1; i <= n; i++) {
    int x, y;
    cin >> x >> y;
    cnt[x]++, cnt[y]++;
    g[x].push_back(y), g[y].push_back(x);
  }
  for (int i = 1; i <= n; i++) {
    update(cnt[i] + 1, 1);
  }
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    update(cnt[i] + 1, -1);
    for (int x : g[i]) {
      update(cnt[x] + 1, -1);
      cnt[x]--;
      update(cnt[x] + 1, 1);
    }
    long long L = max(1, p - cnt[i] + 1), R = n;
    ans += query(L, R);
    update(cnt[i] + 1, 1);
    for (int x : g[i]) {
      update(cnt[x] + 1, -1);
      cnt[x]++;
      update(cnt[x] + 1, 1);
    }
  }
  cout << ans / 2;
}
