output_description: If Alice will win, print `Alice`; if Bob will win, print `Bob`.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N L
      s_1
      s_2
      :
      s_N
attempt: class Node:
      def __init__(self):
          self.lt = None
          self.rt = None
          self.dep = None
  
  
  class Trie:
      def __init__(self):
          self.root = Node()
          self.root.dep = 0
  
      def add(self, string):
          node = self.root
          for s in string:
              if s == "0":
                  if node.lt is None:
                      node.lt = Node()
                      node.lt.dep = node.dep + 1
                  node = node.lt
              else:
                  if node.rt is None:
                      node.rt = Node()
                      node.rt.dep = node.dep + 1
                  node = node.rt
  
  
  N, L = map(int, input().split())
  
  trie = Trie()
  
  for _ in range(N):
      s = input()
      trie.add(s)
  
  subgame = []
  stack = [trie.root]
  
  while stack:
      node = stack.pop()
      if node.lt is None and node.rt is None:
          continue
      elif node.rt is None:
          stack.append(node.lt)
          subgame.append(L - node.dep)
      elif node.lt is None:
          stack.append(node.rt)
          subgame.append(L - node.dep)
      else:
          stack.append(node.lt)
          stack.append(node.rt)
  
  
  def grundy(n):
      if n == 0:
          return 0
      if n % 2 == 1:
          return 1
      if n == 2 ** (n.bit_length() - 1):
          return n
      return grundy(n - 2 ** (n.bit_length() - 2))
  
  
  res = 0
  
  for l in subgame:
      res ^= grundy(l)
  
  print("Alice" if res != 0 else "Bob")
  
problem_description: Statement
  
  For strings s and t, we will say that s and t are _prefix-free_ when neither
  is a prefix of the other.
  
  Let L be a positive integer. A set of strings S is a _good string set_ when
  the following conditions hold true:
  
    * Each string in S has a length between 1 and L (inclusive) and consists of the characters `0` and `1`.
    * Any two distinct strings in S are prefix-free.
  
  We have a good string set S = \\{ s_1, s_2, ..., s_N \\}. Alice and Bob will
  play a game against each other. They will alternately perform the following
  operation, starting from Alice:
  
    * Add a new string to S. After addition, S must still be a good string set.
  
  The first player who becomes unable to perform the operation loses the game.
  Determine the winner of the game when both players play optimally.
samples: [{"input": "2 2\n    00\n    01", "output": "Alice\n    \n\nIf Alice adds `1`, Bob will be unable to add a new string.\n\n* * *"}, {"input": "2 2\n    00\n    11", "output": "Bob\n    \n\nThere are two strings that Alice can add on the first turn: `01` and `10`. In\ncase she adds `01`, if Bob add `10`, she will be unable to add a new string.\nAlso, in case she adds `10`, if Bob add `01`, she will be unable to add a new\nstring.\n\n* * *"}, {"input": "3 3\n    0\n    10\n    110", "output": "Alice\n    \n\nIf Alice adds `111`, Bob will be unable to add a new string.\n\n* * *"}, {"input": "2 1\n    0\n    1", "output": "Bob\n    \n\nAlice is unable to add a new string on the first turn.\n\n* * *"}, {"input": "1 2\n    11", "output": "Alice\n    \n\n* * *"}, {"input": "2 3\n    101\n    11", "output": "Bob"}]