import java.util.Scanner; public class Main{ static int m,n; static int ans=0; static int a[]=new int[1000010]; static int[]pre=new int[1000010]; static void init() { for(int i=0;i<=m;i++) { pre[i]=i; } } static int find(int x) { if(pre[x]==x) return x; return pre[x]=find(pre[x]); } static void join(int x,int y) { int fx=find(x); int fy=find(y); if(fx!=fy) { pre[fx]=fy; } } static boolean judge(int x,int y) { return find(x)==find(y); } public static void main(String[]args) { Scanner sc=new Scanner(System.in); while(true) { for(int i=0;i<=m;i++) a[i]=0; m=sc.nextInt(); if(m==0)break; init(); n=sc.nextInt(); for(int i=0;i<n;i++) { int u=sc.nextInt(); int v=sc.nextInt(); join(u, v); }for(int i=1;i<=m;i++) { a[find(i)]=-1; if(a[i]!=-1) ans++; }System.out.println(m-ans-1); ans=0; } } } /************************************************************** Problem: 2203 User: admin Language: Java Result: Accepted Time:759 ms Memory:49696 kb ****************************************************************/