import sys
from collections import deque

def hopcroft_karp(graph, N, nR):
    # graph: list of lists, graph[u] = list of neighbor indices (right side) for left vertex u
    # N: 左側頂点数, nR: 右側頂点数
    INF = 10**9
    dist = [0] * N
    pairU = [-1] * N      # 左側各頂点に対するマッチ相手(右側頂点のインデックス) -1:未マッチ
    pairV = [-1] * nR     # 右側各頂点に対するマッチ相手(左側頂点のインデックス) -1:未マッチ

    def bfs():
        q = deque()
        for u in range(N):
            if pairU[u] == -1:
                dist[u] = 0
                q.append(u)
            else:
                dist[u] = INF
        dist_nil = INF
        while q:
            u = q.popleft()
            if dist[u] < dist_nil:
                for v in graph[u]:
                    if pairV[v] == -1:
                        dist_nil = dist[u] + 1
                    else:
                        if dist[pairV[v]] == INF:
                            dist[pairV[v]] = dist[u] + 1
                            q.append(pairV[v])
        return dist_nil != INF

    def dfs(u):
        for v in graph[u]:
            # vが未マッチなら,またはマッチしている相手を先にdfsして増補パスが見つかれば
            if pairV[v] == -1 or (dist[pairV[v]] == dist[u] + 1 and dfs(pairV[v])):
                pairU[u] = v
                pairV[v] = u
                return True
        dist[u] = INF
        return False

    matching = 0
    while bfs():
        for u in range(N):
            if pairU[u] == -1:
                if dfs(u):
                    matching += 1
    return matching

def main():
    data = sys.stdin.buffer.read().split()
    if not data:
        return
    # 入力はバイト列なので整数に変換
    it = map(int, data)
    N = next(it)
    M = next(it)  # 実際は使いません。景品番号の上限
    bots = []
    prizes_set = set()
    for _ in range(N):
        X = next(it)
        Y = next(it)
        bots.append((X, Y))
        prizes_set.add(X)
        prizes_set.add(Y)
    # 座標圧縮
    prizes_list = sorted(prizes_set)
    comp = {p: i for i, p in enumerate(prizes_list)}
    nR = len(prizes_list)

    # 左側頂点 i (0-indexed) の隣接リストを作成
    graph = [[] for _ in range(N)]
    for i, (X, Y) in enumerate(bots):
        graph[i].append(comp[X])
        graph[i].append(comp[Y])
    
    ans = hopcroft_karp(graph, N, nR)
    sys.stdout.write(str(ans) + "\n")

if __name__ == '__main__':
    main()