#!/usr/bin/env python3

n, k = map(int, input().split())
ls = []
hs = []
pos = [False] * n
for i in range(n):
    ls.append(list(map(int, input().split())))
    hs.append(list(map(int, input().split())))
    if ls[-1] == [0] * k:
        pos[i] = True


# NOTE:
# This version is WA because it keeps a running max over each coordinate.
H = [0] * k


def update_H(j):
    for i in range(k):
        H[i] = max(H[i], hs[j][i])


# Can we verify alg j using alg i.
def covers(j):
    for h, jl in zip(H, ls[j]):
        if h < jl:
            return False
    return True


# do a bfs
q = []

for i in range(n):
    if pos[i]:
        q.append(i)
        update_H(i)
while q:
    q.pop()
    for j in range(n):
        if not pos[j] and covers(j):
            pos[j] = True
            q.append(j)
            update_H(j)

print(pos.count(True))
