#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
template <class T, class U>
inline void Max(T &a, U b) {
  if (a < b) a = b;
}
template <class T, class U>
inline void Min(T &a, U b) {
  if (a > b) a = b;
}
inline void add(int &a, int b) {
  a += b;
  while (a >= 1000000009) a -= 1000000009;
}
int pow(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = ans * (long long)a % 1000000009;
    a = (long long)a * a % 1000000009;
    b >>= 1;
  }
  return ans;
}
char t[3][6] = {"Kuro", "Shiro", "Katie"};
char s[100010];
int main() {
  int j, i, k, ca = 0, m = 0, K, n;
  scanf("%d", &n);
  map<char, int> v;
  int ans[3] = {0};
  for (int i = 0; i < 3; i++) {
    scanf("%s", s);
    m = strlen(s);
    v.clear();
    for (int j = 0; j < m; j++) {
      v[s[j]]++;
    }
    int mx = 0;
    for (auto &o : v) Max(mx, o.second);
    int r = min(n, m - mx);
    if (mx == m && n == 1) {
      mx--;
    } else {
      mx += r;
    }
    ans[i] = min(mx, m);
  }
  int mx = 0, c = 0;
  for (int i = 0; i < 3; i++)
    if (mx < ans[i]) {
      mx = ans[i], c = 1, K = i;
    } else if (mx == ans[i])
      c++;
  if (c > 1) {
    puts("Draw");
  } else
    printf("%s\n", t[K]);
  return 0;
}
