Pattern Language

아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

MM 個の相異なるアルファベット var_1,var_2,,var_Mvar\_1,  var\_2,   … ,  var\_M がある. 0,1,,9,var_1,var_2,,var_M0,   1,   … ,   9,   var\_1,   var\_2,   … ,   var\_M10+M10+M 種類の文字からなる,長さ NN の文字列 s_1s_2s_3s_Ns\_1s\_2s\_3…s\_N が与えられる. この文字列における各アルファベットを数字で置き換えて回文になるようにしたい.(回文とは,前から読んでも後ろから読んでも同じ文字列をあらわす.) ここで,同じアルファベットは同じ数字で置き換えなければならない.また与えられたすべてのアルファベットvar_ivar\_iは少なくとも,一度は文字列s_1s_2s_3s_Ns\_1s\_2s\_3…s\_Nにあらわれる.

アルファベット var_ivar\_i00 以上 u_iu\_i 以下の,leading zero を含まない整数に置き換える事ができる. 置き換えた後の文字列が回文になるような置き換え方が何通り存在するかを,mod 109+710^9+7 で求めよ. なお,アルファベットの置き換え方が異なれば,得られる文字列が同じでも異なるものとして数える.

입력

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

NN MM

s_1s_2s_3s_Ns\_1s\_2s\_3…s\_N

var_1var\_1 u_1u\_1

......

var_Mvar\_M u_Mu\_M

출력

置き換え方の場合の数を 109+710^9 + 7 で割った剰余を一行で出力せよ.

제한

  • 1N5001 ≤ N ≤ 500
  • 1M101 ≤ M ≤ 10
  • 0u_i990 ≤ u\_i ≤ 99
  • s_is\_i0,1,,9,var_1,var_2,,var_M\\{'0',   '1',   … ,   '9',   var\_1,   var\_2,   … ,   var\_M\\}
  • var_ia,b,,jvar\_i ∈ \\{'a',   'b',   … ,   'j'\\}
  • 各アルファベット var_ivar\_is_1s_2s_3s_Ns\_1s\_2s\_3 …s\_N に少なくとも一度は現れる.
  • var_1,var_2,,var_Mvar\_1,  var\_2,  … ,  var\_M はすべて異なる