import sys
from collections import deque
def dfs(graph, v, visited):
visited[v] = True
for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)
n= int(input())
m = int(input())
path =[[] for x in range(n+1)]
for i in range(m):
a,b = map(int, sys.stdin.readline().split())
path[a].append(b)
path[b].append(a)
path =[sorted(x) for x in path]
visited = [False]*len(path)
dfs(path,1,visited)
count =0
for ele in visited:
if ele == True:
count +=1
print(count -1)