1 #include<iostream>
2 using namespace std;
3
4 int num[10000];
5
6 int findx(int x)
7 {
8 while(num[x]!=x)x=num[x];
9 return x;
10 }
11
12 void merge(int x,int y)
13 {
14 int fx=findx(x);
15 int fy=findx(y);
16 if(fx!=fy) num[fx]=fy;
17 }
18
19 int main()
20 {
21 int m,n,x,y,ans=0;
22 while(cin>>n&&n)
23 {
24 cin>>m;
25 for(int i=1;i<=n;i++)
26 num[i]=i;
27 while(m--)
28 {
29 cin>>x>>y;
30 merge(x,y);
31 }
32 ans=-1;
33 for(int i=1;i<=n;i++)
34 if(num[i]==i) ans++;
35 cout<<ans<<endl;
36 }
37 return 0;
38 }