@staticmethod
def d():
    (n, m) = map(int, sys.stdin.readline().split())
    edges = set((((x - 1), (y - 1)) for (x, y) in zip(*([map(int, sys.stdin.read().split())] * 2))))
    print(max((len(s) for i in range(1, (1 << n)) for s in [[j for j in range(n) if ((i >> j) & 1)]] if all((((x, y) in edges) for (x, y) in itertools.combinations(s, 2))))))
@staticmethod
def d():
    (n, m) = map(int, sys.stdin.readline().split())
    edges = set((((x - 1), (y - 1)) for (x, y) in zip(*([map(int, sys.stdin.read().split())] * 2))))
    print(max((len(s) for i in range(1, (1 << n)) for s in [[j for j in range(n) if ((i >> j) & 1)]] if all((((x, y) in edges) for (x, y) in itertools.combinations(s, 2))))))