#include <stdio.h>
#include <stdlib.h>
int main() {
int N, M;
scanf("%d %d", &N, &M);
int* graph = (int*)calloc((N + 1) * (N + 1), sizeof(int));
for (int i = 0; i <= N; i++) {
graph[i] = (int*)calloc((N + 1), sizeof(int));
}
for (int i = 0; i < M; i++) {
int u, v;
scanf("%d %d", &u, &v);
graph[u][v] = 1;
graph[v][u] = 1;
}
int count = 0;
for (int i = 1; i <= N; i++) {
for (int j = i + 1; j <= N; j++) {
if (graph[i][j]) {
graph[i][j] = 0;
graph[j][i] = 0;
int visited[N + 1];
for (int k = 1; k <= N; k++) {
visited[k] = 0;
}
visited[i] = 1;
int stack[N];
int top = -1;
stack[++top] = i;
while (top >= 0) {
int node = stack[top--];
for (int k = 1; k <= N; k++) {
if (graph[node][k] && !visited[k]) {
visited[k] = 1;
stack[++top] = k;
}
}
}
int blindSpot = 0;
for (int k = 1; k <= N; k++) {
if (!visited[k]) {
blindSpot = 1;
break;
}
}
if (!blindSpot) {
count++;
}
graph[i][j] = 1;
graph[j][i] = 1;
}
}
}
for (int i = 0; i <= N; i++) {
free(graph[i]);
}
free(graph);
printf("%d\n", count);
return 0;
}