#include <bits/stdc++.h>
const long long mod = 1e6 + 3;
using namespace std;
int g[1005][1005];
int via[1005];
int d1[1005], d2[1005];
int s, t, n, m;
void disk(int* d, int k) {
  memset(via, 0, sizeof(via));
  int i, j;
  int x, y;
  d[k] = 0;
  for (i = 0; i < n; i++) {
    int mmax = 1000000;
    for (j = 1; j <= n; j++) {
      if (via[j]) continue;
      if (d[j] < mmax) {
        mmax = d[j];
        x = j;
      }
    }
    via[x] = 1;
    for (j = 1; j <= n; j++) {
      if (j == x) continue;
      if (!g[x][j]) continue;
      if (d[x] + 1 < d[j]) {
        d[j] = d[x] + 1;
      }
    }
  }
}
int main() {
  scanf("%d%d%d%d", &n, &m, &s, &t);
  int i, j;
  int x, y;
  memset(g, 0, sizeof(g));
  memset(d2, 1000000, sizeof(d2));
  memset(d1, 1000000, sizeof(d1));
  for (i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    g[x][y] = g[y][x] = 1;
  }
  disk(d1, s);
  disk(d2, t);
  int num = d1[t];
  int cnt = 0;
  for (i = 1; i < n; i++) {
    for (j = i + 1; j <= n; j++) {
      if ((i == s && j == t) || (i == t && j == s)) continue;
      if (g[i][j]) continue;
      if (d1[i] + d2[j] + 1 >= num && d1[j] + d2[i] + 1 >= num) {
        cnt++;
      }
    }
  }
  printf("%d\n", cnt);
}
