時間制限 : sec, メモリ制限 : KB
English / Japanese  

スロットマシン

アイヅ工業は新しいスロットマシンを開発しました。このスロットマシンは、0から9までの数字を横に$W$個、縦に$H$個表示します。横方向の数字の並びを行、縦方向の数字の並びを列と呼びます。$W=5$、$H=3$のときに表示される数字の例を図1に示します。


図1.スロットマシンに表示される数字の例 ($W = 5, H = 3$)

このスロットマシンでは、表示された数字に応じて得点を得られます。得点は以下のように計算されます。1列目からW列目すべてに特定の同じ数字が現れるとき(行の一致は問わない)、その数字を線で結んで1本の折れ線を作ることで得点(その数字)を得ることができます。もし、形状が異なる複数の折れ線を作ることができる場合、すべての折れ線の得点の総和がスロットマシンで得られる得点になります。折れ線が一つも作れなければ、得点は0点になります。

図1に表示された数字で得られる得点を図2で考えます。


図2.スロットマシンの得点の計算例

図1の例では3がどの列にも現れるので、3を結んで折れ線が作れます。5列目に3が2つ現れるので、図2に示すように2種類の折れ線が作れます。各折れ線の得点が3点なので、スロットマシンで得られる得点は6点になります。

スロットマシンに表示されている数字が与えられたとき、得られる得点を求めるプログラムを作成せよ。  

入力

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

$W$ $H$
$row_1$
$row_2$
 :
$row_H$

1行目に横方向の数字の個数$W$ ($1 \leq W \leq 1,000$)と縦方向の数字の個数$H$ ($1 \leq H \leq 1,000$)が与えられる。続く$H$行に、$i$行目に表示される$W$個の数字の並び$row_i$が与えられる。$row_i$は0から9の数字からなる、長さ$W$の列である。

出力

得られる得点を998,244,353で割った余りを1行に出力する。

入出力例

入力例1

5 3
03077
50333
35743

出力例1

6

入力例2

4 4
3351
5335
3573
7350

出力例2

28

入力例2では、3がどの列にも現れる折れ線が6本、5がどの列にも現れる折れ線が2本できる。よって、得点は 3 × 6 + 5 × 2 = 28 となる。

入力例3

12 5
999999999999
999999999999
999999999999
999999999999
999999999999

出力例3

200776919

Note

Algorithm