100 10
87 73
15 71
14 33
1 4
20 80
65 67
36 36
25 4
22 21
7 97
 4 2
3 3
3 4
 5 4
3 3
4 4
5 5
1 2
 4 4
1 2
2 3
3 1
4 4
 4 3
1 1
2 3
3 4
 1000000 1
255765 255765
 4 3
1 2
2 3
4 4
 4 2
1 1
1 2
 3 3
1 1
2 2
3 3
 5 4
1 1
2 3
2 4
2 5
 4 5
1 4
3 4
1 2
2 3
2 4
 4 4
2 3
2 4
3 4
4 4
 10 9
8 10
3 10
2 8
9 3
4 8
1 10
7 9
5 4
7 3
 10 10
1 2
2 3
3 4
4 5
5 1
6 6
7 7
8 8
9 9
10 10
 5 5
1 4
3 4
1 2
2 3
2 4
 3 3
1 2
2 2
3 3
 5 3
1 1
2 2
3 3
 6 12
1 2
1 3
2 3
1 1
2 2
3 3
4 5
5 6
4 6
4 4
5 5
6 6
 4 4
1 2
2 3
1 3
4 4
 5 4
1 2
3 3
4 4
5 5
 7 13
6 7
2 7
3 7
4 3
5 2
1 4
7 7
3 1
5 5
3 3
1 5
2 6
6 6
 2 2
1 1
2 2
 5 5
1 1
2 2
3 3
4 4
5 5
 1 1
1 1
 7 3
1 1
3 3
6 6
 3 3
1 1
2 3
3 3

0 1 0 0 0 0 0 1 0 0 8 6 12 0 8 0 0 0 0 0 57 0 0 0 0 0
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Div2_407D {

	static ArrayList<Integer>[] aList;
	static boolean[] visited;

	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer inputData = new StringTokenizer(reader.readLine());
		int numV = Integer.parseInt(inputData.nextToken());
		int numE = Integer.parseInt(inputData.nextToken());

		aList = new ArrayList[numV + 1];
		for (int i = 1; i <= numV; i++) {
			aList[i] = new ArrayList<Integer>();
		}
		int regCnt = 0;

		int selfCnt = 0;
		boolean[] hSelf = new boolean[numV + 1];

		for (int i = 1; i <= numE; i++) {
			inputData = new StringTokenizer(reader.readLine());
			int a = Integer.parseInt(inputData.nextToken());
			int b = Integer.parseInt(inputData.nextToken());
			if (b != a) {
				regCnt++;
				aList[a].add(b);
				aList[b].add(a);
			} else {
				selfCnt++;
				hSelf[a] = true;
			}
		}

		visited = new boolean[numV + 1];
		dfs(1);
		for (int i = 1; i <= numV; i++) {
			if (!visited[i]) {
				System.out.println(0);
				return;
			}
		}

		long ans = 0;

		// 2 non-self loops
		for (int i = 1; i <= numV; i++) {
			int numA = aList[i].size();
			ans += (long) numA * (numA - 1) / 2;
		}

		// reg and a self
		ans += regCnt * selfCnt;

		// 2 self loops
		ans += selfCnt * (selfCnt - 1) / 2;
		System.out.println(ans);
	}

	static void dfs(int cV) {
		visited[cV] = true;
		for (int adj : aList[cV]) {
			if (!visited[adj]) {
				visited[adj] = true;
				dfs(adj);
			}
		}
	}

}
