#include <bits/stdc++.h>
using namespace std;
#define forr(i, a, b) for(int i = (a); i < (int) (b); i++)
#define forn(i, n) forr(i, 0, n)
#define dforr(i, a, b) for(int i = (int)(b-1); i >= (a); i--)
#define dforn(i, n) dforr(i, 0, n)
#define db(v) cerr << #v << " = " << v << endl
#define pb push_back
#define sz(x) ((int)x.size())
#define fst first
#define snd second
typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
const int MAXN = 100500;

int n, t;
ll L;
map<char, int> g[MAXN];

void addme(string &S){
    int p = 0;
    for(char c : S){
        if(!g[p].count(c)) g[p][c] = t++;
        p = g[p][c];
    }
}

vector<int> T;

void dfs(int p, int d){
    if(sz(g[p]) == 1) T.pb(L-d);
    for(auto t : g[p]){
//        printf("Voy de %d a %d por %c\n", p, t.snd, t.fst);
        dfs(t.snd, d+1);
    }
}

ll grundy(ll n){
    ll ans = 1;
    while(n%2 == 0)ans <<= 1, n >>= 1;
    return ans;
}

int main(){
//	freopen("input.txt", "r", stdin);
	ios :: sync_with_stdio(false);
	while(cin >> n >> L){
        t = 1; forn(i, MAXN)g[i].clear();
        T.clear();

        forn(i, n){
            string S; cin >> S;
            addme(S);
        }
//        ll xxx = 0;
        dfs(0, 0);
//        printf("Arboles restantes:\n");
//        for(ll t : T)printf("%lld ", t); puts("");
        ll xxx = 0;
        for(ll t : T)xxx ^= grundy(t);
        printf("%s\n", (xxx ? "Alice" : "Bob"));
	}
	return 0;
}
