#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n,m,s;
const int N=1e5;
vector<vector<int>>g;
bitset<N+1>viz;
void citire()
{
fin>>n>>m>>s;
int x,y;
g.resize(n+1);
for(int i=0; i<m; i++)
{
fin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
}
void dfs(int nod)
{
viz[nod]=1;
for(auto x:g[nod])
if(!viz[x])
dfs(x);
}
int main()
{
citire();
int cnt=0;
for (int i=1;i<=n;i++)
if (!viz[i]) {
cnt++;
dfs(i);
}
fout<<cnt;
return 0;
}