// degeneraty
// wzorcowka O((n+m)logn)
// Marcin Pilipczuk

#include <cstdio>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;

#define FOREACH(it, X) for(__typeof((X).begin()) it = (X).begin(); it != (X).end(); ++it)

const int N = 500*1000;
vector<int> g[N];
int deg[N];
int n, m;
int d = 0;
bool bylo[N];
set<pair<int, int> > s;

int main(){
  scanf("%d%d", &n, &m);
  while(m--){
    int a, b; scanf("%d%d", &a, &b); --a; --b;
    g[a].push_back(b); g[b].push_back(a);
    deg[a]++; deg[b]++;
  }
  for (int i=0; i<n; i++)
    s.insert(make_pair(deg[i], i));
  for (int i=0; i<n; i++){
    pair<int, int> p = *s.begin();
    s.erase(p);
    bylo[p.second] = true;
    d = max(d, p.first);
    FOREACH(it, g[p.second])
      if (!bylo[*it]){
        s.erase(make_pair(deg[*it], *it));
        deg[*it]--;
        s.insert(make_pair(deg[*it], *it));
      }
  }
  printf("%d\n", d);
  return 0;
}
