#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define fore(b,c) for(int val0=b;val0<c;val0++)
#define forr(k,c,s) for(int k=c;k<s;k++)
#define pb push_back
#define mmp make_pair
#define oset(T) tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>
using namespace __gnu_pbds;
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
typedef pair<int,int> ii;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef long double ld;
typedef vector<vii> al;
typedef vector<ll> vl;
const int INF = 1e9;
const ll INFL = 1LL<<61;
const int MN = 1001000;
int tr[MN][2];
bitset<MN> bs;
int ctr = 1;
void proc(string& s) {
	int st = 0;
	for(int i=0;i<s.size();i++) {
		int id = s[i]-'0';
		if(tr[st][id] == -1) {
			tr[st][id] = ctr++;
		}
		st = tr[st][id];
	}
	bs.set(st);
}
int ct[2] = {0,0};
void dfs(int u, int d) {
	if(bs[u]) return;
	for(int i=0;i<2;i++) {
		if(tr[u][i] == -1) {ct[d%2]++;} else {
			dfs(tr[u][i],d+1);
		}
	}
}
int main() {
	ios::sync_with_stdio(0);cout.precision(20);cout.tie(0);cin.tie(0);
	memset(tr,-1,sizeof(tr));
	ll n,l;
	cin >> n >> l;
	for(int i=0;i<n;i++) {
		string s;
		cin >> s;
		proc(s);
	}
	dfs(0,0);
	if(l&1) {
		swap(ct[0],ct[1]);
	}
	bool res;
	if((ct[1]%2)) {
		res = true;
	} else {
		if((ct[0])%2) {
			res = true;
		} else {res = false;}
	}
	cout << (res?"Alice":"Bob") << '\n';
}