#include<iostream>
#include<algorithm>
using namespace std;
int array[1000000];
int array1[1000000];
int main()
{
int n,m;
cin>>n>>m;
int group=0;
int total=0;
int a,b;
for(int i=0;i<m;i++)
{
cin>>a>>b;
if(array[a]!=0 && array[b]==0)
{
array[b]=array[a];
}else if(array[a]==0 && array[b]!=0)
{
array[a]=array[b];
}
else if(array[a]==0 && array[b]==0)
{
group++;
total++;
array[a]=group;
array[b]=group;
}else if(array[a]!=0 && array[b]!=0 && array[a]!=array[b])
{
/* for(int i=1;i<=n;i++)
{
cout<<array[i]<<"huhuhuhuhuhu\n";
}*/
int temp=array[b];
for(int z=1;z<=n;z++)
{
if(array[z]==temp)
{array[z]=array[a];
//cout<<z<<"sdfsdfdsf"<<array[z]<<"dfsada\n";
}
}
total--;
}
}
//cout<<group<<"dasd"<<total<<"adasda\n";
/*for(int i=1;i<=n;i++)
{
cout<<array[i]<<"\n";
}*/
for(int i=1;i<=n;i++)
{
//cout<<array[i]<<"\n";
array1[array[i]]++;
}
/*for(int i=1;i<=group;i++)
{
cout<<array1[i]<<"\n";
}*/
int ans=0;
for(int i=0;i<=group;i++)
{
for(int j=i+1;j<=group;j++)
{
ans=ans+array1[i]*array1[j];
}
}
cout<<ans<<"\n";
return 0;
}
/*
5 3
1 2
3 4
1 3
*/
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGFycmF5WzEwMDAwMDBdOwppbnQgYXJyYXkxWzEwMDAwMDBdOwppbnQgbWFpbigpCnsKICAgIGludCBuLG07CiAgICBjaW4+Pm4+Pm07CiAgICBpbnQgZ3JvdXA9MDsKICAgIGludCB0b3RhbD0wOwogICAgaW50IGEsYjsKICAgIGZvcihpbnQgaT0wO2k8bTtpKyspCiAgICB7CiAgICAgICAgY2luPj5hPj5iOwoKICAgICAgIGlmKGFycmF5W2FdIT0wICYmIGFycmF5W2JdPT0wKQogICAgICAgIHsKICAgICAgICAgICAgYXJyYXlbYl09YXJyYXlbYV07CiAgICAgICAgfWVsc2UgaWYoYXJyYXlbYV09PTAgJiYgYXJyYXlbYl0hPTApCiAgICAgICAgewogICAgICAgICAgICBhcnJheVthXT1hcnJheVtiXTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihhcnJheVthXT09MCAmJiBhcnJheVtiXT09MCkKICAgICAgICB7CiAgICAgICAgICAgIGdyb3VwKys7CiAgICAgICAgICAgIHRvdGFsKys7CiAgICAgICAgICAgIGFycmF5W2FdPWdyb3VwOwogICAgICAgICAgICBhcnJheVtiXT1ncm91cDsKICAgICAgICB9ZWxzZSBpZihhcnJheVthXSE9MCAmJiBhcnJheVtiXSE9MCAmJiBhcnJheVthXSE9YXJyYXlbYl0pCiAgICAgICAgewogICAgICAgICAvKiAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGNvdXQ8PGFycmF5W2ldPDwiaHVodWh1aHVodWh1XG4iOwogICAgfSovCiAgICBpbnQgdGVtcD1hcnJheVtiXTsKICAgICAgICAgICAgZm9yKGludCB6PTE7ejw9bjt6KyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGFycmF5W3pdPT10ZW1wKQogICAgICAgICAgICAgICAge2FycmF5W3pdPWFycmF5W2FdOwogICAgICAgICAgICAgICAgLy9jb3V0PDx6PDwic2Rmc2RmZHNmIjw8YXJyYXlbel08PCJkZnNhZGFcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG90YWwtLTsKICAgICAgICB9CiAgICB9CiAgICAvL2NvdXQ8PGdyb3VwPDwiZGFzZCI8PHRvdGFsPDwiYWRhc2RhXG4iOwoKICAgIC8qZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgY291dDw8YXJyYXlbaV08PCJcbiI7CiAgICB9Ki8KCiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICAvL2NvdXQ8PGFycmF5W2ldPDwiXG4iOwogICAgICAgICAgICAgICAgYXJyYXkxW2FycmF5W2ldXSsrOwoKICAgIH0KICAgIC8qZm9yKGludCBpPTE7aTw9Z3JvdXA7aSsrKQogICAgewogICAgICAgIGNvdXQ8PGFycmF5MVtpXTw8IlxuIjsKICAgIH0qLwogICAgaW50IGFucz0wOwogICAgZm9yKGludCBpPTA7aTw9Z3JvdXA7aSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj1pKzE7ajw9Z3JvdXA7aisrKQogICAgICAgIHsKICAgICAgICAgICAgYW5zPWFucythcnJheTFbaV0qYXJyYXkxW2pdOwogICAgICAgIH0KICAgIH0KCmNvdXQ8PGFuczw8IlxuIjsKICAgIHJldHVybiAwOwp9CgoKLyoKNSAzCjEgMgozIDQKMSAzCiovCg==