import sys
input = sys.stdin.readline
N = int(input())
conn_num = int(input())
networks = [[0] * (N + 1) for _ in range(N+1)]
for _ in range(conn_num):
a, b = map(int, input().split())
networks[a][b] = 1; networks[b][a] = 1
def dfs(current_node, networks, foot_print):
foot_print += [current_node]
for search_node in range(len(networks[current_node])):
if networks[current_node][search_node] and search_node not in foot_print:
foot_print = dfs(search_node, networks, foot_print)
return foot_print
result = dfs(1, networks, [])
print(len(result) - 1)