Problem:
B: Shortest Crypt

問題

xryuseixくんの学校では暗号が流行している. 格子状の街に住んでいるxryuseixくんは集合場所を決める新しい暗号を考えた.

暗号文は $N$ 文字の文字列 $S$ からなり, $S_i$ の文字によって現在地からの移動方向を決める. 移動方向に関しては以下の通りである.

A ~ M : 北に１マス進む.

N ~ Z : 南に１マス進む.

a ~ m : 東に１マス進む.

n ~ z : 西に１マス進む.

さて,ここでxryuseixくんは, yryuseiyちゃんにデートの集合場所を暗号文で教えようと思ったのだが, 暗号文が冗長なことに気づいた.

例えば,「ANA」という暗号文があったとしよう. これは北に $1$ マス進み, 南へ $1$ マス進んだのち北へ $1$ マス進む.
これは北に $1$ マス進む暗号文と等価なので,「ANA」＝「A」と, 簡潔にできる. xryuseixくんはyryuseiyちゃんに遠回りをさせないよう,暗号文を簡潔にしようと思った.

そこであなたはxryuseixくんに変わって, 暗号文を簡潔にするプログラムを書くことになった.
なお, 「暗号文を簡潔にする」とは,「元の暗号文と同じ目的地へ行く最も短い暗号文を作る」ということである.

制約

$N$ は整数であり, $S_i$ は大文字または小文字のアルファベットである.

$1 \leq N \leq 10^{5}$

入力形式

入力は以下の形式で与えられる.

$N$

$S$

出力

$1$ 行目に簡潔にした後の暗号文の長さ, $2$ 行目にその暗号文を出力せよ.
答えとしてありうる暗号文が複数存在する場合, どれを出力してもよい.
また各行の末尾に改行を出力せよ.

サンプル

サンプル入力 1

5
ANazA

サンプル出力 1

1
A

サンプル入力 2

7
ACMICPC

サンプル出力 2

5
HIJKL

サンプル入力 3

4
AIZU

サンプル出力 3

0

簡潔にした暗号文(空の文字列)のあとに改行が必要なことに注意.

Solution in Ruby (judge verdict: Accepted)

n = gets.to_i
s = gets.chomp
arr = [0, 0]
s.each_char{|c|
    if c < "a"
        if c < "N"
            arr[0] += 1
        else
            arr[0] -= 1
        end
    else
        if c < "n"
            arr[1] += 1
        else
            arr[1] -= 1
        end
    end
}
puts arr.map{|x| x.abs}.inject(:+)
crypt = ""
if arr[0] >= 0
    crypt += ("A" * arr[0])
else
    crypt += ("N" * (- arr[0]))
end
if arr[1] >= 0
    crypt += ("a" * arr[1])
else
    crypt += ("n" * (- arr[1]))
end
puts crypt