#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> g[1123456];
int vis[1123456];
int self[1123456];
void dfs(int u) {
  vis[u] = 1;
  for (int i = 0; i < g[u].size(); i++) {
    int v = g[u][i];
    if (!vis[v]) dfs(v);
  }
}
int main(void) {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    if (a != b) {
      g[a].emplace_back(b);
      g[b].emplace_back(a);
    } else {
      self[a] = 1;
    }
  }
  int flag = 0;
  for (int i = 1; i <= n; i++) {
    if (!vis[i] and (self[i] or g[i].size())) {
      dfs(i);
      flag++;
    }
  }
  if (flag > 1) {
    printf("0\n");
    return 0;
  }
  long long cnt = 1;
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    long long sz = g[i + 1].size();
    long long aux = sz * (sz - 1) / 2;
    ans += aux;
    if (self[i + 1]) {
      ans += m - (cnt++);
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
