#include <bits/stdc++.h>
using namespace std;
char _;
const int maxN = 300 * 1000 + 5;
const int mod = 1000 * 1000 * 1000 + 9;
const int base = 701;
const int SQ = 317;
const int maxL = 17;
int a[maxN], b[maxN];
map<pair<int, int>, int> mp;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, p;
  cin >> n >> p;
  vector<pair<int, int> > ed;
  for (int i = 0; i < n; i++) {
    int v, u;
    cin >> v >> u;
    v--;
    u--;
    if (v > u) swap(v, u);
    a[v]++;
    a[u]++;
    b[v]++;
    b[u]++;
    mp[{v, u}]++;
    ed.push_back({v, u});
  }
  sort(a, a + n);
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    int ps = lower_bound(a, a + n, p - a[i]) - a;
    ans += n - ps;
  }
  for (int i = 0; i < n; i++)
    if (a[i] + a[i] >= p) ans--;
  ans >>= 1;
  sort(ed.begin(), ed.end());
  ed.resize(unique(ed.begin(), ed.end()) - ed.begin());
  for (int i = 0; i < ed.size(); i++) {
    int v = ed[i].first, u = ed[i].second;
    if (b[v] + b[u] >= p && b[v] + b[u] - mp[{v, u}] < p) ans--;
  }
  cout << ans << endl;
  return 0;
}
