#include<iostream>
#include<vector>
using namespace std;
vector<int>ve;
int find(int v){
if(v==ve[v])return v;//路径压缩
else return ve[v]=find(ve[v]);
while(v!=ve[v]){
v=ve[v];
}return v;
}
void unionset(int v1,int v2){
int u=find(v1);
int v=find(v2);
if(u!=v){
if(u>v)ve[u]=v;
else ve[v]=u;
}
}
int main(int argc, char *argv[])
{
int sum=0;int num=0;
int n,m;int v1,v2;int i;
while(cin>>n>>m&&n){
num++;
ve.push_back(0);
sum=0;
for(i=1;i<=n;++i)
ve.push_back(i);
for( i=1;i<=m;++i){
cin>>v1>>v2;
unionset(v1,v2);
}
for(i=1;i<=n;++i)
if(ve[i]==i)sum++;
cout<<"Case "<<num<<": "<<sum<<endl;
ve.clear();
}
return 0;
}