#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <bitset>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
#define pii pair<int,int>
#define Lson L, mid, ls[rt]
#define Rson mid+1, R, rs[rt]
#define sys system("pause")
const int maxn=1e6+10;
using namespace std;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p%mod;p=p*p%mod;q>>=1;}return f;}
inline void umax(int &p,int q){if(p<q)p=q;}
inline void umin(int &p,int q){if(p>q)p=q;}
inline ll read()
{
ll x=0;int f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n,m,k,t,to[maxn];
char a[maxn];
int dfs(int l,int r,int cnt)
{
if(to[l]>=r)
{
if(a[l]=='A')return 1;
else return 2;
}
if((r-l+1)/2%2==1)return 0;
int mid=l+r>>1,a=dfs(l,mid,cnt^1),b=dfs(mid+1,r,cnt^1);
if(cnt==0)
{
if(a==1||b==1)return 1;
else if(!a||!b)return 0;
else return 2;
}
else
{
if(a==2||b==2)return 2;
else if(!a||!b)return 0;
else return 1;
}
}
int main()
{
int i,j;
scanf("%d%s",&n,a);
scanf("%s",a+n);
n<<=1;
for(i=n-1;i>=0;i--)
{
if(a[i]==a[i+1])to[i]=to[i+1];
else to[i]=i;
}
int ok=dfs(0,n-1,0);
if(ok==0)puts("Draw");
else if(ok==1)puts("Alice");
else puts("Bob");
return 0;
}