from collections import defaultdict





def solve(n, l, nums):

    xor = 0



    if n == 1:

        for i in range(min(nums), l + 1):

            xor ^= i & -i

        return xor



    for i in range(min(nums), l + 1):

        ni = nums[i]

        for k in ni:

            if k ^ 1 not in ni:

                xor ^= i & -i

            nums[i + 1].add(k // 2)

        del nums[i]

    return xor





n, l = list(map(int, input().split()))

nums = defaultdict(set)

for s in (eval(input()) for _ in range(n)):

    nums[l - len(s) + 1].add(int(s, 2) + (1 << len(s)))



print(('Alice' if solve(n, l, nums) else 'Bob'))

from collections import defaultdict





def solve(l, ss):

    xor = 0

    for d in range(min(ss), l + 1):

        sl = ss[d]

        sl.sort()

        while sl:

            s = sl.pop()

            ps = s[:-1]

            ss[d + 1].append(ps)

            if s[-1] == '1' and sl and sl[-1][:-1] == ps:

                sl.pop()

            else:

                xor ^= d & -d

        del ss[d]

    return xor





n, l = list(map(int, input().split()))

ss = defaultdict(list)

for s in (eval(input()) for _ in range(n)):

    ss[l - len(s) + 1].append(s)



print(('Alice' if solve(l, ss) else 'Bob'))

from collections import defaultdict


def solve(n, l, nums):
    xor = 0
    if n == 1:
        for i in range(min(nums), l + 1):
            xor ^= i & -i
        return xor
    for i in range(min(nums), l + 1):
        ni = nums[i]
        for k in ni:
            if k ^ 1 not in ni:
                xor ^= i & -i
            nums[i + 1].add(k // 2)
        del nums[i]
    return xor


n, l = list(map(int, input().split()))
nums = defaultdict(set)
for s in (eval(input()) for _ in range(n)):
    nums[l - len(s) + 1].add(int(s, 2) + (1 << len(s)))
print(("Alice" if solve(n, l, nums) else "Bob"))

from collections import defaultdict


def solve(l, ss):
    xor = 0
    for d in range(min(ss), l + 1):
        sl = ss[d]
        sl.sort()
        while sl:
            s = sl.pop()
            ps = s[:-1]
            ss[d + 1].append(ps)
            if s[-1] == "1" and sl and sl[-1][:-1] == ps:
                sl.pop()
            else:
                xor ^= d & -d
        del ss[d]
    return xor


n, l = list(map(int, input().split()))
ss = defaultdict(list)
for s in (eval(input()) for _ in range(n)):
    ss[l - len(s) + 1].append(s)
print(("Alice" if solve(l, ss) else "Bob"))

-def solve(n, l, nums): +def solve(l, ss): -    if n == 1: -        for i in range(min(nums), l + 1): -            xor ^= i & -i -        return xor -    for i in range(min(nums), l + 1): -        ni = nums[i] -        for k in ni: -            if k ^ 1 not in ni: -                xor ^= i & -i -            nums[i + 1].add(k // 2) -        del nums[i] +    for d in range(min(ss), l + 1): +        sl = ss[d] +        sl.sort() +        while sl: +            s = sl.pop() +            ps = s[:-1] +            ss[d + 1].append(ps) +            if s[-1] == "1" and sl and sl[-1][:-1] == ps: +                sl.pop() +            else: +                xor ^= d & -d +        del ss[d] -nums = defaultdict(set) +ss = defaultdict(list) -    nums[l - len(s) + 1].add(int(s, 2) + (1 << len(s))) -print(("Alice" if solve(n, l, nums) else "Bob")) +    ss[l - len(s) + 1].append(s) +print(("Alice" if solve(l, ss) else "Bob"))