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 Main {
    static class FastReader {
        private BufferedReader br;
        private StringTokenizer st;

        FastReader() {
            br = new BufferedReader(new
                    InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }
    }

    private static int n, m, loop = 0, cnt = 0;
    private static ArrayList<Integer>[] g;
    private static boolean[] mark;

    private static void setup()
    {
        FastReader fastReader = new FastReader();
        n = fastReader.nextInt();
        m = fastReader.nextInt();

        g = new ArrayList[n + 1];
        for (int u = 1; u <= n; u ++)
            g[u] = new ArrayList<>();
        mark = new boolean[n + 1];
        int u, v;
        for (int i = 1; i <= m; i ++)
        {
            u = fastReader.nextInt();
            v = fastReader.nextInt();
            if (u == v)
                loop ++;
            else
            {
                g[u].add(v);
                g[v].add(u);
            }
        }
    }

    private static void dfs(int u)
    {
        cnt ++;
        mark[u] = true;
        for (int v: g[u])
            if (!mark[v])
                dfs(v);
    }


    private static void xuly()
    {
        dfs(1);
        if (cnt != n)
        {
            System.out.print(0);
            return;
        }

        long ans = (long) loop * (m - 1) - (long) loop * (loop - 1) / 2;
        for (int u = 1; u <= n; u ++)
            ans += (long) g[u].size() * (g[u].size() - 1) / 2;
        System.out.print(ans);
    }

    public static void main(String[] argm)
    {
        setup();
        xuly();
    }
}
