AtCoder Regular Contest 019

B - こだわりの名前


Time limit時間制限 : 2sec / Memory limitメモリ制限 : 256MB

問題文

ゲームも中盤にさしかかり、ちょうど海に出るための船を手に入れた。早く新たなダンジョンへ挑戦したいところだが、その前に船にかっこいい名前をつけねばならない。

早く先に進みたいので船の名前はデフォルトのものでいいかと思ったが、さすがにそれでは面白くないのでデフォルトの名前から 1 文字だけ変更することにしよう。

ところで、こういう場面でプログラミングコンテストの問題文の登場人物はなぜか「名前が回文になるようにしよう」とかいう訳のわからないこだわりを発揮することが多いのだが、私はそういう普通の登場人物とは違うのだ。私に変なこだわりはないので、船の名前は 回文でない ものにしたい。

さて、デフォルトの名前を 1 文字だけ変更することで、回文でない名前は何通りぐらい作ることができるのだろうか?プログラムを書いて確かめることとしよう。ちなみに船の名前として使える文字はアルファベットの大文字だけだ。

え?「回文でない名前にしたい」というのは「変なこだわり」ではないのかって?言われてみれば確かにその通りだし、やはり私はプログラミングコンテストの登場人物としての宿命から逃れることはできないのかもしれない。しかし、私のような者がこうして変なこだわりを持つことで多くの人がプログラミングコンテストを楽しんでくれるのであれば、それはそれで良いことなのだろう。


入力

入力は以下の形式で標準入力から与えられる。

A
  • 1 行目には、船のデフォルトの名前 A が書かれている。
    • A1 文字以上 3 \times 10^5 文字以下のアルファベットの大文字のみからなる文字列である。

出力

デフォルトの名前から 1 文字を選び、その文字を別の大文字アルファベットに変更することで得られる 回文でない 文字列が何通りあるかを表す数値を 1 行に出力せよ。

なお、回文とは前から読んでも後ろから読んでも同じとなる文字列のことである。たとえば ANNA, MADAM, X は回文だが、AB, ARC は回文ではない。

出力の末尾にも改行をいれること。


入力例1

ARC

出力例1

73
  • 1 文字目の A を他の文字に変更する場合
    • C に変更すると CRC は回文となってしまいます。
    • それ以外の 24 通り(たとえば BRC, XRC など)はいずれも回文ではありません。
  • 2 文字目の R を他の文字に変更する場合
    • どの文字に変更しても回文にはならないので 25 通りが考えられます。
  • 3 文字目の C を他の文字に変更する場合
    • A に変更すると ARA は回文となってしまいます。
    • それ以外の 24 通りはいずれも回文ではありません。

したがって、答えは 24 + 25 + 24 = 73 通りとなります。

どれか 1 つの文字を変更したもののみを考えること、すなわちどの文字も変更していない ARC という名前については数えないことにも注意してください。


入力例2

S

出力例2

0

1 文字の文字列はすべて回文になります。


入力例3

NOLEMONNOMELON

出力例3

350

Submit提出する