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.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/*
 public class _789D {

 }

 */

public class _789D
{
	public void solve() throws FileNotFoundException
	{
		InputStream inputStream = System.in;

		InputHelper inputHelper = new InputHelper(inputStream);

		PrintStream out = System.out;

		// actual solution
		int n = inputHelper.readInteger();

		int m = inputHelper.readInteger();

		List[] g = new List[n];

		for (int i = 0; i < n; i++)
		{
			g[i] = new ArrayList<Integer>();
		}

		for (int i = 0; i < m; i++)
		{
			int u = inputHelper.readInteger();
			int v = inputHelper.readInteger();

			if (u == v)
				continue;

			g[u - 1].add(v - 1);
			g[v - 1].add(u - 1);
		}

		boolean[] vis = new boolean[n];

		dfs(0, g, vis);

		for (int i = 0; i < n; i++)
		{
			if (!vis[i])
			{
				System.out.println("0");
				return;
			}
		}

		int ov = 0;
		for (int i = 0; i < n; i++)
		{
			if (g[i].size() == 1)
			{
				ov++;
			}
			else if (g[i].size() % 2 == 1)
			{
				System.out.println("0");
				return;
			}
		}

		System.out.println((ov * (ov - 1)) / 2);
		// end here
	}

	void dfs(int u, List[] g, boolean[] vis)
	{
		vis[u] = true;

		for (int i = 0; i < g[u].size(); i++)
		{
			int v = (int) g[u].get(i);

			if (!vis[v])
			{
				dfs(v, g, vis);
			}
		}
	}

	public static void main(String[] args) throws FileNotFoundException
	{
		(new _789D()).solve();
	}

	class InputHelper
	{
		StringTokenizer tokenizer = null;
		private BufferedReader bufferedReader;

		public InputHelper(InputStream inputStream)
		{
			InputStreamReader inputStreamReader = new InputStreamReader(
					inputStream);
			bufferedReader = new BufferedReader(inputStreamReader, 16384);
		}

		public String read()
		{
			while (tokenizer == null || !tokenizer.hasMoreTokens())
			{
				try
				{
					String line = bufferedReader.readLine();
					if (line == null)
					{
						return null;
					}
					tokenizer = new StringTokenizer(line);
				}
				catch (IOException e)
				{
					e.printStackTrace();
				}
			}

			return tokenizer.nextToken();
		}

		public Integer readInteger()
		{
			return Integer.parseInt(read());
		}

		public Long readLong()
		{
			return Long.parseLong(read());
		}
	}
}