不正利用フィルター用の正規表現

問題文

あるウェブサイトの不正利用フィルターは、以下の正規表現を使用して、あるフォントの作成必要がある文字を一致させます。

1
2
3
(action == "edit")
&
(added_lines rlike "[龦-鿼䶶-䶿𠀀-𱍊]")

上記のフィルターは、CJK統合漢字のURO追加部分(初期の一部)、拡張A追加部分及び拡張BからGまでのすべての文字(もちろん、空のコード位置及び互換漢字補助を含む)の編集に一致します。頻度の高い文字については、フォントに既に含まれている場合でも、編集時にフィルターがトリガーされるため、フォントを作成する際に参考として使用するのは不便です。したがって、この正規表現を修正して、Unicodeの新しい漢字に一致しますが、既に含まれている部分を省いて、重複トリガーを回避します。フォントが更新されるたびに、このフィルターの正規表現も更新し、更新で追加済みの部分を除外する必要があります。

入力形式

1行に2つの正規表現文字列$a,b$が含まれており、それぞれに一致する文字の集合が$A,B$とします。

出力形式

最も短い$A \setminus B$に一致できる正規表現を出力せよ。また、-[]以外の文字はUnicodeコードポイントの昇順に並べること。

入出力の例

入力例1

1
[𰀀-𱍊] [𰻞]

出力例1

1
[𰀀-𰻝𰻟-𱍊]

入力例2

1
[龦-鿿] [龲龵鿏鿔鿭鿬鿫]

出力例2

1
[龦-龱龳龴龶-鿎鿐-鿓鿕-鿪鿮-鿿]

説明・ヒント

  1. $a$と$b$はどちらも、[で始まり]で終わる文字列で、その間にはCJK統合漢字または-しか含まれません。
  2. $B \subset A$を満たし、かつ、$A$の要素数は$3 \times 10^5$以下とします。
  3. abcのように3つの連続したコード位置に一致する場合は、[abc]ではなく[a-c]を使用してください。