import sys
def find(x):
if x!=p[x]:
p[x]=find(p[x])
return p[x]
n,m=map(int,sys.stdin.readline().split())
p=[i for i in range(n+1)]
res=0
for _ in range(m):
a,b=map(int,sys.stdin.readline().split())
p[find(a)]=find(b)
for i in range(1,n+1):
if p[i]==i: #计算有多少个集合
res+=1
print(res-1) #需要的道路就在集合中相连,所以2个连一条,要-1