n, k = map(int, input().split()) # 長さNで一番小さいMMA文字列は? # A...AMMA # 素直な辞書順では、この次はA...AMMMだけど、これはMMA文字列ではない # - AAAMMA # - AAAMMM # - AAMAAA # - AAMAAM # - AAMAMA # - AAMAMM # - AAMMAA !!! ←MMA文字列 MMAが上の"桁"に移動した # - AAMMAM !!! # - AAMMMA !!! MMAAの、AA部分が全てMになるまでMMA文字列 # - AAMMMM # - AMAAAA # - AMAAAM # - AMAAMA # - AMAAMM # - AMAMAA # - AMAMAM # - AMAMMA !!! Mが繰り上がって、また下の桁にMMAが出現した # A...AMMAから開始 # MMA~を適当に動かす # 問題は生成がめんどくさいということで... # MMAが連続する区間は # - 2^1 - 1 # - 2^2 - 1 # # - 2^1 - 1 # - 2^3 - 1 # # - 2^1 - 1 # - 2^2 - 1 # - 2^4 - 1 # # - # 一番左のMMAを決め打ちして、周りをガチャガチャ? # AAAAMMA # AAAMMAA # AAMAMMA # AAMMAAA # そうでもないな MMA文字列はかなり多い # 列挙する範囲は狭くてよさそう cnt = 0 bits = min(n, 17) for i in range(1 << bits): s = "".join("AM"[(i >> j) & 1] for j in range(bits))[::-1] if "MMA" in s: cnt += 1 if cnt == k: if bits < n: print("A" * (n - bits) + s) else: print(s) break # print(s, "!!!" if "MMA" in s else "", cnt) # print("!!!" if "MMA" in s else "", cnt) # if cnt >= 10**5: # print(s) # break