#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void dfsUtil(vector<int>&visit, vector<vector<int>>g, int s, int &count, int n){
visit[s] = 1;
count++;
for(int i=1;i<=n;i++ ){
if(g[s][i] && !visit[i])dfsUtil(visit, g, i, count, n);
}
}
void printInconveinence(vector<vector<int>>g, vector<pair<int,int>> roads, int n){
vector<int> visited, forest, ans;
int count =0, j;
for(int i=0; i<roads.size(); i++){
int u = roads[i].first, v=roads[i].second;
// cout<<endl<<u<<" "<<v<<endl;
// removed the road
g[u][v]=0;
g[v][u]=0;
visited.resize(n+1,0);
// checking for no of city in each island or forest
for(int s=1;s<=n; s++){
count =0;
if(!visited[s])dfsUtil(visited, g, s, count, n);
// cout<<"s-> "<<s<<" - "<<count<<", ";
if(count)forest.push_back(count);
}
// if each city can be reached from every other city
if(forest.size()==1){
ans.push_back(0);
} else{
int no=0;
for(int j=0;j<forest.size();j++){
for(int k=j+1;k<forest.size();k++ )no += forest[j]*forest[k];
}
ans.push_back(no);
}
// reset values to check if another road is removed what is the inconvenience then
forest.clear();
visited.clear();
}
for(int i=0; i<ans.size(); i++)cout<<ans[i]<<endl;
}
int main() {
int n , m;
cin>>n>>m;
vector<vector<int>> g(n+1, vector<int>(n+1,0));
vector<pair<int,int>> roads;
int u,v;
for(int i=0;i<m;i++){
cin>>u>>v;
g[u][v]=1;
g[v][u]=1;
roads.push_back(make_pair(u,v));
}
printInconveinence(g, roads, n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBkZnNVdGlsKHZlY3RvcjxpbnQ+JnZpc2l0LCB2ZWN0b3I8dmVjdG9yPGludD4+ZywgaW50IHMsIGludCAmY291bnQsIGludCBuKXsKCXZpc2l0W3NdID0gMTsKCWNvdW50Kys7Cglmb3IoaW50IGk9MTtpPD1uO2krKyApewoJCWlmKGdbc11baV0gJiYgIXZpc2l0W2ldKWRmc1V0aWwodmlzaXQsIGcsIGksIGNvdW50LCBuKTsKCX0KfQoKdm9pZCBwcmludEluY29udmVpbmVuY2UodmVjdG9yPHZlY3RvcjxpbnQ+PmcsIHZlY3RvcjxwYWlyPGludCxpbnQ+PiByb2FkcywgaW50IG4pewoJdmVjdG9yPGludD4gdmlzaXRlZCwgZm9yZXN0LCBhbnM7CgkKCWludCBjb3VudCA9MCwgajsKCWZvcihpbnQgaT0wOyBpPHJvYWRzLnNpemUoKTsgaSsrKXsKCQlpbnQgdSA9IHJvYWRzW2ldLmZpcnN0LCB2PXJvYWRzW2ldLnNlY29uZDsKCQkvLyBjb3V0PDxlbmRsPDx1PDwiICI8PHY8PGVuZGw7CgkJLy8gcmVtb3ZlZCB0aGUgcm9hZAoJCWdbdV1bdl09MDsKCQlnW3ZdW3VdPTA7CgkJCgkJdmlzaXRlZC5yZXNpemUobisxLDApOwoJCS8vIGNoZWNraW5nIGZvciBubyBvZiBjaXR5IGluIGVhY2ggaXNsYW5kIG9yIGZvcmVzdAoJCQoJCWZvcihpbnQgcz0xO3M8PW47IHMrKyl7CgkJCWNvdW50ID0wOwoJCQlpZighdmlzaXRlZFtzXSlkZnNVdGlsKHZpc2l0ZWQsIGcsIHMsIGNvdW50LCBuKTsKCQkJLy8gY291dDw8InMtPiAiPDxzPDwiIC0gIjw8Y291bnQ8PCIsICI7CgkJCWlmKGNvdW50KWZvcmVzdC5wdXNoX2JhY2soY291bnQpOwoJCX0KCQkKCQkvLyBpZiBlYWNoIGNpdHkgY2FuIGJlIHJlYWNoZWQgZnJvbSBldmVyeSBvdGhlciBjaXR5IAoJCWlmKGZvcmVzdC5zaXplKCk9PTEpewoJCQlhbnMucHVzaF9iYWNrKDApOwoJCX0gZWxzZXsKCQkJaW50IG5vPTA7CgkJCWZvcihpbnQgaj0wO2o8Zm9yZXN0LnNpemUoKTtqKyspewoJCQkJZm9yKGludCBrPWorMTtrPGZvcmVzdC5zaXplKCk7aysrIClubyArPSBmb3Jlc3Rbal0qZm9yZXN0W2tdOwoJCQl9CgkJCWFucy5wdXNoX2JhY2sobm8pOwoJCX0KCQkKCQkvLyByZXNldCB2YWx1ZXMgdG8gY2hlY2sgaWYgYW5vdGhlciByb2FkIGlzIHJlbW92ZWQgd2hhdCBpcyB0aGUgaW5jb252ZW5pZW5jZSB0aGVuCgkJZm9yZXN0LmNsZWFyKCk7CgkJdmlzaXRlZC5jbGVhcigpOwoJfQoJCglmb3IoaW50IGk9MDsgaTxhbnMuc2l6ZSgpOyBpKyspY291dDw8YW5zW2ldPDxlbmRsOwp9CgppbnQgbWFpbigpIHsKCWludCBuICwgbTsKCWNpbj4+bj4+bTsKCXZlY3Rvcjx2ZWN0b3I8aW50Pj4gZyhuKzEsIHZlY3RvcjxpbnQ+KG4rMSwwKSk7Cgl2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gcm9hZHM7CglpbnQgdSx2OwoJZm9yKGludCBpPTA7aTxtO2krKyl7CgkJY2luPj51Pj52OwoJCWdbdV1bdl09MTsKCQlnW3ZdW3VdPTE7CgkJcm9hZHMucHVzaF9iYWNrKG1ha2VfcGFpcih1LHYpKTsKCX0KCXByaW50SW5jb252ZWluZW5jZShnLCByb2Fkcywgbik7CgkKCXJldHVybiAwOwp9