alexjercan/bugnet huggingface dataset:
Lights of Apartment

Problem

エーちゃんとリカちゃんとハルトくんはマンションに遊びに来た。

3人は全ての部屋の電気を管理できる部屋に忍び込みいたずらをすることにした。

このマンションはn個の立方体が1列に並んでいる形をしている。

各立方体は西から順に1辺の長さが1ずつ増えていて(1,2,3,...,n)、i番目の立方体はi階あり、各階に縦i×横i個の部屋がある。

2番目以降の立方体の西側は1つ西の立方体の東側と接していて、全ての立方体の南側は真っ直ぐな道路に面している。

初め全ての部屋に電気がついている。

3人はそれぞれ次の行動をした。

エーちゃんは西からk番目の全ての部屋の電気を消した。

リカちゃんは南からk番目の全ての部屋の電気を消した。

ハルトくんはk階の全ての部屋の電気を消した。

このようないたずらが m 回行われた後に電気がついている部屋の数を求めよ。

Input

n m
q1 k1
...
qm km

入力は全て整数で与えられる。

1行目に立方体の数n、行動の数mが与えられる。

2行目以降m行に行動した人の番号qとkが与えられる。

qiが0の場合エーちゃん、 1の場合リカちゃん、2の場合ハルトくんが行動したことを表す。

3人は部屋がない場所の電気を消そうとすることもある。

Constraints

1 ≤ n,m ≤ 50000

0 ≤ qi ≤ 2

1 ≤ ki ≤ 2×109

同じ行動は一度しか与えられない

Output

電気がついている部屋の数を1行に出力せよ。

Sample Input 1

3 1
0 4

Sample Output 1

27

Sample Input 2

3 2
2 2
2 3

Sample Output 2

14
String Crossing

Problem

N個の文字列{ S1, S2, ..., SN } が与えられる。
続いてQ個のクエリが与えられる。
クエリの種類は以下の2つである。

a,b,c,dが入力されSa の b文字目からの substring を Sc の d-1文字までの substring の後に繋げる。これを新しいScとする。
元のSc の d文字目からの substring を Sa の b-1文字までの substring の後に繋げる。これを新しいSaとする。

a,b,cが入力され Sa の b文字目を c に変更する。

例えばS1="abcd",S2="efgh"があり
クエリの種類が1でa=1,b=2,c=2,d=3のとき

a - -> bcd
X
ef - -> gh

S1="agh",S2="efbcd"となる。

全てのクエリを処理した後の文字列S1からSNを全て出力せよ。

Input

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

N Q
S1
S2
...
SN
query1
query2
...
queryQ

各queryは次のいずれかである。

1 a b c d

or

2 a b c

Constraints

1 ≤ N ≤ 105

1 ≤ Q ≤ 105

N個の文字列の長さの合計は2×106を越えない。

文字列Siは全て英小文字であることが保証される。

クエリの種類が1のとき

a ≠ c

1 ≤ b ≤ |Sa|

1 ≤ d ≤ |Sc|

クエリの種類が2のとき

1 ≤ b ≤ |Sa|

cは英小文字であることが保証される。

高速な入出力を推奨する。

Output

各クエリを処理した後の文字列をS1からSNまで1行ずつ出力せよ。

S1
S2
...
SN

Sample Input 1

2 1
abcd
efgh
1 1 2 2 3

Sample Output 1

agh
efbcd

Sample Input 2

2 3
abcd
efgh
1 1 2 2 3
2 1 3 x
2 2 4 x

Sample Output 2

agx
efbxd

Sample Input 3

10 10
sjcvpauokb
fmeaowomscy
sepeqqfcosrjmonfsv
zapc
aromazjzqoeiqswvcaf
clifpa
dusudcz
qeqdzdtdzlkhc
gkpsjvdvadmf
xrtyxnkolluagwxp
1 4 4 6 3
1 7 1 8 1
2 2 6 o
1 4 4 3 7
2 1 2 i
1 6 3 3 2
1 6 5 1 9
2 10 9 j
1 2 2 7 3
2 3 2 b

Sample Output 3

sicvpauoeqqifpa
fqdzdtdzlkhc
sb
zapfcosrjmonfsv
aromazjzqoeiqswvcaf
clepkb
qemeaooomscy
dusudcz
gkpsjvdvadmf
xrtyxnkojluagwxp
Point in The Triangle

Problem

点(0,0),(n-1,0),(0,m-1),(n-1,m-1)に囲まれた長方形の閉区間内から格子点を3点選び、三角形を作る。

このとき、点(x1,y1)を含むが点(x2,y2)を含まない三角形の数と点(x2,y2)を含むが点(x1,y1)を含まない三角形の数の差の絶対値を求めよ。

点が境界線上にあるものは三角形に含まれているとみなす。

ただし、3点が一直線上に並んでいるものは三角形とはみなさない。

Input

n m x1 y1 x2 y2

入力は全て整数で与えられる。

1行にn,m,x1,y1,x2,y2が空白区切りで与えられる。

Constraints

2 ≤ n,m ≤ 500

0 ≤ x1,x2 ≤ n-1

0 ≤ y1,y2 ≤ m-1

(x1,y1) ≠ (x2,y2)

Output

差の絶対値を1行に出力せよ。

Sample Input 1

2 2 0 0 0 1

Sample Output 1

0

Sample Input 2

3 2 1 0 0 0

Sample Output 2

3
Gossip

Problem

1からnまでの番号が順番に割り当てられているn人のアイドルが横一列に並んでいる。

アイドルiは単位時間でアイドルi-1とアイドルi+1に情報を伝達することができる。ただし、アイドル1はアイドル2にしか情報を伝達できず、アイドルnはアイドルn-1にしか情報を伝達できない。

時刻0の時点で、番号がa1, a2, ..., amであるm人のアイドルが秘密の情報を持っている。すべてのアイドルが秘密の情報を得ることのできる最小の時間を求めよ。

Input

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

n m
a1 a2 ... am

1行目に2つの整数nとmが空白区切りで与えられる。

2行目にm個の整数a1, a2, ..., amが空白区切りで与えられる。

Constraints

2 ≤ n ≤ 105

1 ≤ m ≤ n

1 ≤ ai ≤ n

aiの値は全て異なる

aiは昇順で与えられる

Output

すべてのアイドルに情報が伝わる最小の時間を1行に出力する。

Sample Input 1

3 2
1 3

Sample Output 1

1

Sample Input 2

10 3
2 5 7

Sample Output 2

3

Sample Input 3

10 5
2 5 6 8 10

Sample Output 3

1

Sample Input 4

100000 1
1

Sample Output 4

99999
Product Sale Lines

Problem

ウニクロ卯月さんと目黒凛さんはSEARIGHT LIVE FESの物販に来ている。下図のように、物販列は二列からなり、横にW人、縦にH人並べる大きさでコの字の形をしている。列の先頭の人は買い物をした後に列からはけ、同じ列の後ろの人々はそれぞれ一人分ずつ列を詰める。

二人は最初に物販列の最後尾に隣同士で、それぞれ違う列に（下図オレンジと濃い青色の位置）並んでいる。二人はとても仲がよいため、常にできるだけ近くにいたい。しかし、人のはけ方は列によって違うため、違う列に並んでいる二人の位置は離れてしまう可能性がある。

あなたの仕事は、列のはけ方が与えられたとき、二人が隣同士になる回数を求めることである。
ただし、二人ともコの字の角にいる（上図の黒色の状態の）ときは、隣同士とみなさない。また、並んだ直後は隣同士に並んでいるが、これは数えない。

Input

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

W H
N
p1 p2 ... pN

1行目に列の大きさを表す整数WとHが空白区切りで与えられる。Wはコの字の横に並べる外側の人数を、Hは縦に並べる外側の人数を表す。2行目に人が一人どちらかの列からはける回数Nが与えられる。3行目には列のはけ方についての情報p1...pNが空白区切りで与えられる。piに’0’または’1’であり、’0’のとき、外側の人が一人はけることを、’1’のとき内側の人が一人はけることを表す。ただし、ウニクロ卯月さんまたは目黒凛さんが列から出ることはない。

Constraints

4 ≤ W ≤ 100

4 ≤ H ≤ 100

0 ≤ N ≤ 100

Output

二人が隣同士になる回数を一行に出力せよ。

Sample Input 1

11 11
5
0 0 0 0 0

Sample Output 1

0

Sample Input 2

11 11
5
0 0 1 1 1

Sample Output 2

1
Community Integration

Problem

N個の村がある。それぞれの村には1からNまでの番号がついている。昨今の合併ブームにより、いくつかの村が合併されることになった。合併された2つ以上の村は新しい1つの市となり、どの村とも合併されない村は村のままである。

あなたは、ある2つの村が合併後に同じ市になる、という情報を複数与えられる。その情報の組み合わせによって、3つ以上の村が1つの市になることもありうる。

合併後に同じ市になる村同士の情報が与えられたとき、合併後の市の数と村の数の差の絶対値を出力せよ。

Input

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

N M
a1 b1
a2 b2
...
ai bi
...
aM bM

1行目に村の数Nと合併についての情報の数Mが空白区切りで与えられる。

2行目からM+1行目に、合併についての情報を表す２つの整数aiとbiが空白区切りで与えらる。各情報はai番目の村とbi番目の村が合併後に同じ市になることを示す。ただし、ai=biを満たすような入力は与えられない。

Constraints

1 ≤ N ≤ 1,000

0 ≤ M ≤ 100

1 ≤ ai ≤ N

1 ≤ bi ≤ N

Output

村の数と市の数の差の絶対値を1行に出力せよ。

Sample Input 1

3 1
1 2

Sample Output 1

0

Sample Input 2

4 2
1 4
2 3

Sample Output 2

2

Sample Input 3

5 0

Sample Output 3

5

Sample Input 4

3 3
1 2
2 3
3 1

Sample Output 4

1

このケースではすべての村が1つの市に合併されることを表し、その市の中で合併される2つの村をつなぐつなぎ方の全通りが入力として与えられている。

Sample Input 5

3 2
1 2
2 3

Sample Output 5

1

このケースでは合併される3つの村をつなぐつなぎ方の全通りが入力として与えられているわけではないが、つながっている村をたどればすべての村にたどり着くことができるので、すべての村が一つの市に合併される。

Sample Input 6

5 4
1 2
2 3
3 4
4 5

Sample Output 6

1

Sample Input 7

10 5
3 4
1 2
9 6
2 6
2 9

Sample Output 7

2
Courage Test

P「今日は肝試し企画の番組の収録だ。」

O型智絵里「き、きもだめし……」

四村かな子「智絵里ちゃん大丈夫？」

月野茜「さすがPさん！一行で状況が明晰判明にわかる素晴らしい解説です！さあ！火の玉に向かって走りましょう！」

P「ルールは簡単、みんなで協力してこのエリアのすべての神社にお参りしてくるだけだ。」

茜「オーソドックスですね！早速神社に向かって走りましょう！」

かな子「でもここ、日本有数の神社密度で行かなくちゃいけない神社がたくさんあるんじゃなかったっけ……」

かな子「でも茜ちゃんがいれば心強いよ！」

P「ちなみにスタートは全員違う神社からスタート、合流も禁止だ。それじゃあ智絵里とかな子は初期位置についてくれ」

智絵里「うぅ……」

かな子「お、お菓子を持っていけば大丈夫！」

智絵里「頑張る……」

茜「プロデューサー！私はどうすれば！」

P「お前は賑やかしだ」

茜「えっ」

P「座ってろ」

茜「」

Problem

それぞれ1~nの番号が付けられたn個の神社とn-1本の道がある。各道は神社aiと神社biを繋ぎ、双方向に移動することができる。それぞれの神社は、任意の神社から1本以上の道を経由して到達することができる。また、任意の2つの神社の間の(迂回しない)経路は一意に定まる。

O型智絵里ちゃんと四村かな子ちゃんがそれぞれ神社uと神社vにいる。

今、2人を任意に移動させることを考える。移動とは、ある神社から1本の道を経由して別の神社に進むことである。
その際、以下のルールを満たしたい。

2人合わせて全ての神社を訪問する。

2人の移動数を同じにする。

1つの神社, 道は1人しか通れず、さらに1度しか通ることができない。

神社u, vは既に訪れているものとし、通ることはできない。

これらのルールを満たすことができるかどうかを判定し、できる場合は"Yes"を、できない場合は"No"を出力せよ。

Input

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

n u v
a1 b1
a2 b2
...
an−1 bn−1

1行目に3つの整数n, u, vが空白区切りで与えられる。

2行目からn行目までに、2つの整数ai, biが空白区切りで与えられる。

Constraints

2 ≤ n ≤ 105

1 ≤ ai, bi, u, v ≤ n

u ≠ v

ai < bi

(ai, bi) ≠ (aj, bj) (i ≠ j)

Output

ルールを満たすことができる場合は"Yes"を、できない場合は"No"を1行に出力する。

Sample Input 1

4 1 4
1 2
2 3
3 4

Sample Output 1

Yes

Sample Input 2

8 3 6
1 2
2 4
3 4
4 5
5 6
6 7
7 8

Sample Output 2

No

Sample Input 3

4 2 3
1 2
2 3
3 4

Sample Output 3

Yes

Sample Input 4

6 1 5
1 2
1 4
2 3
4 5
3 6

Sample Output 4

No
Rubik Dungeon

Problem

あなたはn × n × nの立方体のルービックキューブ型のダンジョンにやってきた。

あなたは現在(x1,y1,z1)の部屋にいる。

目標の宝は(x2,y2,z2)の部屋にある。

あなたは隣接している前後左右上下の部屋に単位時間で移動することができる。

各部屋には6つのボタンがあり、それぞれのボタンを押すことにより、単位時間で、ルービックキューブのように以下の操作を行うことができる：

現在いる部屋とx座標の値が同じ全ての部屋を時計または反時計周りに90度回転することができる

現在いる部屋とy座標の値が同じ全ての部屋を時計または反時計周りに90度回転することができる

現在いる部屋とz座標の値が同じ全ての部屋を時計または反時計周りに90度回転することができる

回転している途中で他の部屋に移動することはできない。

宝のある部屋まで最短で移動した場合の時間を求めよ。

Input

n
x1 y1 z1
x2 y2 z2

入力は全て整数で与えられる。

1行目にnが与えられる。

2行目に現在地の座標(x1,y1,z1)、3行目に宝のある部屋の座標(x2,y2,z2)が空白区切りで与えられる。

Constraints

2 ≤ n ≤ 105

0 ≤ x1,y1,z1,x2,y2,z2 ≤ n−1

(x1,y1,z1) ≠ (x2,y2,z2)

Output

最短の時間を出力せよ。

Sample Input 1

3
0 0 0
1 2 2

Sample Output 1

3

Sample Input 2

3
0 0 0
0 0 2

Sample Output 2

2

回転させると宝も移動してしまうので、回転させずに移動する。
Array Update 2

Problem

項数 N 、初項 a 、公差dの等差数列 A がある。
以下の形式で、数列を書き換える M 個の命令文が与えられるので、与えられた順序で M 回
数列 A を書き換えたときの数列 A の K項目の値を求めなさい。

i 番目の命令文は3つの整数 xi , yi , zi で与えられる。(1 ≤ i ≤ M)

xiが0だった場合、yi項目から
zi項目までの区間において、値の順序を反転する。

xiが1だった場合、yi項目から
zi項目までの区間において、それぞれの値を1増加させる。

xiが2だった場合、yi項目から
zi項目までの区間において、それぞれの値を半分にする（小数点以下は切り捨てる）。

Input

N
a d
M
x1 y1 z1
x2 y2 z2
...
xM yM zM
K

1行目に、1つの整数 N が与えられる。
2行目に、2つの整数 a と d が空白区切りで与えられる。
3行目に、1つの整数 M が与えられる。

4行目からの M 行のうち i 行目には i 番目の命令文を表す 3 つの整数 xi, yi, zi が空白区切りで与えられる。

最後の行に、1つの整数 K が与えられる。

Constraints

2 ≤ N ≤ 200000

1 ≤ a ≤ 5

1 ≤ d ≤ 5

1 ≤ M ≤ 200000

0 ≤ xi ≤ 2 (1 ≤ i ≤ M)

1 ≤ yi ≤ N (1 ≤ i ≤ M)

1 ≤ zi ≤ N (1 ≤ i ≤ M)

yi < zi (1 ≤ i ≤ M)

1 ≤ K ≤ N

Output

入力で与えられた順番で数列AをM回更新したときのK項目を出力せよ。

Sample Input 1

4
2 1
3
0 1 2
1 1 4
2 2 4
3

Sample Output 1

2

{ 2 , 3 , 4 , 5 }

↓ 0 1 2 ... 1項目から2項目までの区間の値の順序を反転する

{ 3 , 2 , 4 , 5 }

↓ 1 1 4 ... 1項目から4項目までの区間の値をそれぞれ1増やす

{ 4 , 3 , 5 , 6 }

↓ 2 2 4 ... 2項目から4項目までの区間の値をそれぞれ半分にする（小数点以下切り捨てる）

{ 3 , 1 , 2 , 3 }

よって3項目の値は2である。

Sample Input 2

5
1 2
3
1 2 3
2 3 5
0 1 5
1

Sample Output 2

4

{ 1 , 3 , 5 , 7 , 9 }

↓ 1 2 3 ... 2項目から3項目までの区間の値をそれぞれ1増やす

{ 1 , 4 , 6 , 7 , 9 }

↓ 2 3 5 ... 3項目から5項目までの区間の値をそれぞれ半分にする（小数点以下切り捨てる）

{ 1 , 4 , 3 , 3 , 4 }

↓ 0 1 5 ... 1項目から5項目までの区間の値の順序を反転する

{ 4 , 3 , 3 , 4 , 1 }

よって1項目の値は4である。
Barter

Problem

ナナツ君は、うまか棒をx本、ふがしをy本持っている。

n人のお菓子交換人がいる。
それぞれの交換人iは、

ナナツ君のうまか棒ai本と交換人のふがしbi本

ナナツ君のふがしci本と交換人のブタメソdi個

のどちらか1つの方法で1回だけ交換してくれる。

この制約の下で、最終的に所持しているブタメソの個数を最大化せよ。

Input

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

n
x y
a1 b1 c1 d1
a2 b2 c2 d2
...
an bn cn dn

1行目に整数nが与えられる。

2行目に整数x, yが空白区切りで与えられる。

3行目からn+2行目に整数ai, bi, ci, diが空白区切りで与えられる。

Constraints

1 ≤ n ≤ 100

0 ≤ x, y ≤ 300

1 ≤ ai, bi, ci, di ≤ 300

\(\sum_{i=1}^na_i\) ≤ 300, \(\sum_{i=1}^nb_i\) ≤ 300, \(\sum_{i=1}^nc_i\) ≤ 300, \(\sum_{i=1}^nd_i\) ≤ 300

Output

最終的にナナツ君が所持しているブタメソの個数の最大値を1行に出力する

Sample Input 1

3
3 3
3 2 4 1
5 1 2 1
3 1 3 2

Sample Output 1

3

Sample Input 2

3
3 4
3 1 3 1
3 1 4 1
3 1 2 1

Sample Output 2

2

Sample Input 3

4
5 0
5 1 1 1
2 1 2 1
4 1 1 1
3 1 3 1

Sample Output 3

2

Sample Input 4

4
0 0
1 10 1 10
2 5 2 5
3 25 5 6
1 15 2 20

Sample Output 4

0
Reflection Warp Machine

Problem

とある宇宙では、2次元の格子点上にn個の星が存在し、宇宙人達はReflection Warp Machineを使い、星間を移動している。

この装置は、任意の位置、角度で直線を引くことができる。

この直線を対称軸として、現在いる座標から線対称の座標に移動することができる。

ただし、星が存在しない座標に移動することはできない。

一度引いた直線は何度でも利用できる。

現在、(x0,y0)の星にいるある宇宙人はすべての星を訪れたいと考えている。

星は好きな順番に訪れることができる。

すべての星を訪れるのに最小で何本の直線を引く必要があるか求めよ。

Input

n
x0 y0
...
xn−1 yn−1

入力は全て整数で与えられる。

1行目にnが与えられる。

2行目以降n行にi番目の星の座標(xi,yi)が空白区切りで与えられる。

Constraints

2 ≤ n ≤ 8

−100 ≤ xi,yi ≤ 100

(xi,yi) ≠ (xj,yj) (i ≠ j)

Output

すべての星を訪れるために必要な最小の直線の数を1行に出力せよ。

Sample Input 1

3
0 0
0 1
1 0

Sample Output 1

2

Sample Input 2

4
0 0
0 1
0 2
0 3

Sample Output 2

2
Circles and Ray

Problem

2次元平面上にそれぞれ互いに共通部分をもたない N 個の円が与えられる。
また、円にはそれぞれ1から N までの番号が割り振られている。

あなたは、端点が1番目の円の円周上にあるような半直線を任意の数だけ設置することができる。
どの円も1本以上の半直線との共通部分を持っているようにするためには、最低何本の半直線を設置しなければならないかを求めなさい。

Input

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

N
x1 y1 r1
x2 y2 r2
...
xN yN rN

1行目に、1つの整数 N が与えられる。
2行目からの N 行のうち i 行目には i 番目の円のx座標、y座標、半径を表す3つの整数 xi, yi, ri が空白区切りで与えられる。

Constraints

2 ≤ N ≤ 16

-100 ≤ xi ≤ 100 (1 ≤ i ≤ N)

-100 ≤ yi ≤ 100 (1 ≤ i ≤ N)

1 ≤ ri ≤ 100 (1 ≤ i ≤ N)

Output

どの円も1本以上の半直線との共通部分を持っているようにするためには最低何本の半直線を設置しなければならないかを出力せよ。

Sample Input 1

3
0 0 2
3 3 1
6 1 1

Sample Output 1

1

Sample Input 2

4
1 2 3
12 2 2
7 6 2
1 9 3

Sample Output 2

2

Sample Input 3

5
0 0 5
0 10 1
10 0 1
-10 0 1
0 -10 1

Sample Output 3

4
Equivalent Vertices

Background

会津大学付属幼稚園はプログラミングが大好きな子供が集まる幼稚園である。
園児の一人であるゆう君は,プログラミングと同じくらいお絵描きが大好きだ。
これまでゆう君は丸と六角形と矢印で沢山絵を書いてきた。
ある日ゆう君はこれらの絵がグラフであることを知る。
丸と六角形は頂点と呼ばれ,矢印は辺と呼ばれているらしい。
ゆう君は2つの頂点間を結ぶようにして矢印を描き、更にその上に0か1を書く。
このように,辺に重み(0または1)があり有向な辺からなるグラフは重み付き有向グラフと呼ばれる。
また,頂点と数字x(0または1)が与えられた時,その頂点から出ている矢印のうち,xと同じ重みを持つ矢印に従って別の頂点に移動することをxに従って遷移すると言う。
今日ゆう君は0と1からなるどのような数列に従って遷移しても最終的に到達する頂点の種類(丸または六角形)が一緒であるような頂点の対が存在することに気がついた。
これについてゆう君は一つの問題を思いついた。

Problem

重み付き有向グラフが与えられる。
このグラフの各頂点は0から順番にn-1まで番号が割り振られている。
また,各頂点はそこから重みが0の辺と1の辺の合計2本の辺が出て行く。
さらに,頂点には丸い頂点か六角形の頂点の2種類が存在し,各頂点はそれらのいずれかである。
以下にSample Input 2で与えられる重み付き有向グラフを示す。

図1. Sample Input 2

以下の形式でm個の質問が与えられるので、それぞれについて答えを出力せよ。

頂点の番号qが与えられるので,この頂点と等価な頂点の数を出力せよ

2つの頂点a,bが以下の2つの条件を満たすとき,aとbは等価である。

aとbは同じ種類の頂点である

0と1からなる長さ1以上の任意の数列について,それに従ってaとbのそれぞれから遷移を開始したとき最終的に到達する頂点の種類が同じである

例えば,図1の頂点3から数列0,0,1,0に従って遷移を開始すると,
3→2→1→1→1の順番で遷移し最終的に到達する頂点は1である。

Sample Input 2 において,頂点0と頂点2,頂点0と頂点4は等価である。
頂点0と頂点4について考える。
これらは両方とも丸い頂点であるため1つめの条件を満たす。
また,これらの頂点から0または1で遷移した結果到達する頂点は1か5である。
頂点1,5はそれぞれどのような数列に従って遷移してもその頂点に止まり続ける。
また,両方とも六角形の頂点である。
これより,頂点0と頂点4はどのような数列に従って遷移しても最終的に到達する頂点は六角形の頂点であるため2つめの条件も満たす。
条件を2つとも満たすので頂点0と頂点4は等価である。
最終的に到達する頂点は種類が同じであれば良いため,頂点の番号が同じである必要はないことに注意せよ。
また,頂点0と頂点1は等価でない。
頂点0は丸い頂点で頂点1は六角形頂点なので,1つめの条件を満たさない。

Input

n m
v0 s0 t0
v1 s1 t1
…
vn−1 sn−1 tn−1
q0
q1
…
qm−1

vi,si,tiはそれぞれi番の頂点の種類,0による遷移先の頂点番号,1による遷移先の頂点番号

viが0のとき,i番の頂点は丸い頂点であり,1のとき六角形の頂点

qjはj番目の質問で与えられる頂点の番号

Constraints

入力は全て整数として与えられる

1 ≤ n ≤ 3000

1 ≤ m ≤ n

0 ≤ si,ti,qj ≤ n-1

0 ≤ vi ≤ 1

与えられるグラフの辺が双方向に移動できるものとしたとき,任意の2点を結ぶような辺の集合が存在する, つまり与えられるグラフは連結である

Output

各質問で与えられる頂点の番号qjに対して,それと等価な頂点の数をそれぞれ一行に出力せよ。

Sample Input 1

2 1
0 0 1
0 1 0
0

Sample Output 1

2

Sample Input 2

6 6
0 1 5
1 1 1
0 1 5
0 2 1
0 5 1
1 5 5
0
1
2
3
4
5

Sample Output 2

3
2
3
1
3
2
Sum of Sequences

Problem

n個の要素を持つ数列A、m個の要素を持つ数列B、
それぞれが整数cからなるq個のクエリが与えられる。

各クエリについて、

数列Aの[la,ra]を全て足した数と数列Bの[lb,rb]を全て足した数の差の絶対値がcになるla,ra,lb,rb (0 ≤ la ≤ ra ≤ n−1, 0 ≤ lb ≤ rb ≤ m−1, 配列の番号は0番から始まる) の組み合わせの数を求めよ。

Input

n m q
a0 a1 ... an−1
b0 b1 ... bm−1
c0
c1
...
cq−1

入力は全て整数で与えられる。

1行目に数列の要素数nとm、クエリ数qが与えられる。

2行目に数列Aの要素、3行目に数列Bの要素が空白区切りで与えられる。

4行目からq行に各クエリの値ciが与えられる。

Constraints

1 ≤ n, m ≤ 4×104

1 ≤ q ≤ 105

1 ≤ ai, bi ≤ 5

0 ≤ ci ≤ 2×105

Output

出力はq行からなる。各クエリの組み合わせの数を順番に一行に出力せよ。

Sample Input 1

3 3 1
1 2 3
3 1 2
3

Sample Output 1

6

Sample Input 2

5 4 2
1 2 3 4 5
2 2 2 2
11
12

Sample Output 2

3
4
String in String

Problem

文字列SとQ個のクエリが与えられる。

i番目のクエリ(0 ≤ i ≤ Q-1)には閉区間[li,ri]と文字列Miが与えられる。
Sのli文字目からri文字目までの部分文字列の中に文字列Miはいくつ存在するか出力せよ。

Input

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

S Q
l0 r0 M0
l1 r1 M1
.
.
.
lQ−1 rQ−1 MQ−1

1行目に文字列Sとクエリの数Qが空白区切りで与えられる。

続くQ行に整数li, ri, Miが空白区切りで与えられる。

Constraints

1 ≤| S | ≤ 100000

1 ≤ Q ≤ 100000

1 ≤ | Mi | ≤ 100000 (0 ≤ i ≤ Q-1)

0 ≤ li ≤ ri < | S | (0 ≤ i ≤ Q-1)

文字はすべて英小文字である

文字列Mの合計文字数は2000000を越えない

Output

出力はQ行からなる。各クエリに対する答えを順番に1行に出力せよ。

Sample Input 1

rupcrupc 5
0 3 rupc
0 7 rupc
2 7 ru
2 7 pc
1 5 u

Sample Output 1

1
2
1
2
2

Sample Input 2

abatagaadbura 8
0 6 a
6 12 a
0 6 aa
0 3 a
3 5 a
5 9 a
1 8 b
1 12 b

Sample Output 2

4
3
0
2
1
2
1
2

Sample Input 3

aaaaaaaaaa 5
0 9 aaa
0 9 aa
5 9 aaaa
2 8 aa
1 2 a

Sample Output 3

8
9
2
6
2
Monochrome Tile

Problem

白い正方形のタイルが横方向に W 個、縦方向に H 個、合計 W × H 個敷き詰められている。

太郎君は、 i 日目の朝に、左から axi 番目で上から ayi 番目のタイルを左上、
左から bxi 番目で上から byi 番目のタイルを右下にした長方形領域に存在しているタイルがすべて白いかどうかを確認する。
もしすべてのタイルが白かった場合、それらのタイルをすべて黒く塗りつぶす。それ以外のときは何もしない。

N 日間のそれぞれの日において、その日の作業が終了した時点で黒く塗りつぶされたタイルが何枚あるかを出力せよ。

Input

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

W H
N
ax1 ay1 bx1 by1
ax2 ay2 bx2 by2
...
axN ayN bxN byN

1行目に、2つの整数 W と H が空白区切りで与えられる。
2行目に、1つの整数 N が与えられる。
3行目からの N 行のうち i 行目には i 日目の朝に確認する長方形領域を表す
4つの整数 axi ayi bxi byi が空白区切りで与えられる。

Constraints

2 ≤ W ≤ 100000

2 ≤ H ≤ 100000

2 ≤ N ≤ 100000

1 ≤ axi ≤ bxi ≤ W (1 ≤ i ≤ N )

1 ≤ ayi ≤ byi ≤ H (1 ≤ i ≤ N )

Output

N 日間のそれぞれの日において、i 日目の作業が終了した時点で黒く塗りつぶされたタイルの枚数を i 行目にを出力せよ。

Sample Input 1

5 4
5
1 1 3 3
3 2 4 2
4 3 5 4
1 4 5 4
4 1 4 1

Sample Output 1

9
9
13
13
14

□□□□□

□□□□□

□□□□□

□□□□□

↓ 1 1 3 3

■■■□□

■■■□□

■■■□□

□□□□□

↓ 3 2 4 2　（なにもしない）

■■■□□

■■■□□

■■■□□

□□□□□

↓ 4 3 5 4

■■■□□

■■■□□

■■■■■

□□□■■

↓ 1 4 5 4 （なにもしない）

■■■□□

■■■□□

■■■■■

□□□■■

↓ 4 1 4 1

■■■■□

■■■□□

■■■■■

□□□■■

よって出力は、 9 → 9 → 13 → 13 → 14 となる。
Problem A: Plants

Problem

がっちょ君は横W個×縦H個のマスで区切られた畑を所有している。x列目y行目のマスをマス (x, y) と呼ぶことにする。いくつかのマスの土地には高さ0cmの植物が1本だけ植えてあり、その他のマスの土地には何も植えられていない。

がっちょ君はある時刻に畑に肥料をまく。肥料がまかれたマスに植物が植えられているとき、その植物の高さが1cm伸びる。植物が植えられていないときは、何もおこらない。植物が伸びるのにかかる時間はとても短いので無視できる。がっちょ君は同じ時刻に複数のマスに肥料をまくことができる。ただし、同じ時刻に同じマスに2度以上肥料をまくことはない。

がっちょ君が肥料をまいた記録が与えられたとき、時刻T時点での畑の植物の高さの和を計算せよ。

Input

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

W H T
p
x0 y0 t0
x1 y1 t1
...
xp−1 yp−1 tp−1
s0,0 s1,0 … sW−1,0
s0,1 s1,1 … sW−1,1
...
s0,H−1 s1,H−1 … sW−1,H−1

1行目に畑の横幅W、畑の縦幅H、時刻Tが与えられる。がっちょ君は時刻Tまでに肥料をまきおえる。

2行目にがっちょ君が肥料をまいた回数pが与えられる。

3行目から2+p行目までに与えられる３つの整数は、がっちょ君が時刻tiにマス(xi, yi)に肥料をまいたことを表す。

3+p行目から2+p+H行目までは、最初の畑のそれぞれのマスに植物が植えられているかどうかを表すW×H個の整数が与えられる。sj,kが1のときマス(j, k)に高さ0cmの植物が1本だけ植えられていることを表し、sj,kが0のときマス(j, k)に植物は1本も植えられていないことを表す。

Constraints

1 ≤ W, H, T ≤ 50

0 ≤ p ≤ min(W×H×T, 50)

0 ≤ xi < W

0 ≤ yi < H

0 ≤ ti < T

sj,k = 0または1

Output

時刻Tでの畑の植物の高さの和を1行に出力せよ。

Sample Input 1

3 3 3
5
2 0 0
0 1 0
1 1 1
1 2 1
2 2 0
0 0 0
0 1 0
0 0 0

Sample Output 1

1

Sample Input 2

2 3 4
2
0 0 0
1 1 3
1 0
0 0
0 0

Sample Output 2

1

Sample Input 3

3 8 6
6
0 4 3
2 5 3
0 2 3
2 2 5
1 1 3
2 2 1
1 1 1
1 1 1
1 1 1
1 0 1
0 1 1
1 1 0
1 0 1
0 1 0

Sample Output 3

4

Sample Input 4

8 3 3
7
0 1 1
5 1 0
4 0 2
3 2 0
3 1 1
3 0 1
5 1 1
1 0 1 1 0 0 1 0
0 0 1 1 0 1 0 1
0 1 0 0 0 1 0 1

Sample Output 4

4
Problem B: Potatoes

Problem

がっちょ君はN面の畑とM個の芋を所有している。各畑にはそれぞれ1からNまでの番号が付けられている。がっちょ君は畑に芋を植え収穫することで、芋の数を増やしたいと考えている。

がっちょ君は一人暮らしであり、1人ではK面までの畑しか管理することができない。また、各畑の土の状態や面積は様々で、芋の収穫数や植えることのできる芋の数も様々である。芋を畑iに植えた場合、1年後には畑iに植えた芋1つにつきai個の芋を収穫することができる。ただし、畑iには最大でもbi個の芋しか植えることができない。

がっちょ君がK面以内の畑にM個以内の芋を植えた時、1年後に所有することができる芋の数の最大値を求めてほしい。

Input

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

N M K
a1 a2 ... aN
b1 b2 ... bN

1行目に3個の整数N, M, Kが空白区切りで与えられる。

2行目にN個の整数aiが空白区切りで与えられる。

3行目にN個の整数biが空白区切りで与えられる。

Constraints

1 ≤ N ≤ 15

1 ≤ M ≤ 104

1 ≤ K ≤ min(N,3)

1 ≤ ai ≤ 103

1 ≤ bi ≤ 104

Output

芋の数の最大値を1行で出力せよ。

Sample Input 1

5 100 3
2 3 4 5 6
50 40 20 10 5

Sample Output 1

280

畑1に40個、畑2に40個、畑3に20個植えることで収穫後に280個の芋を所有することができる。

Sample Input 2

5 100 3
2 3 4 5 100
50 40 20 10 1

Sample Output 2

339

畑2に40個、畑3に20個、畑5に1個植えることで300個の芋を収穫することができ、植えなかった芋と合わせて答えは339になる。
Problem C: Unhappy Class

Problem

山之御船学園の1年G組は、不幸を背負った女子生徒たちが集まるクラスである。 彼女たちは、幸福になることを目標に、日々様々な試練に立ち向かう。

彼女たちのクラスでは、幸福になるための試練の一環として、幸福実技科目を受講することができる。

月曜から金曜のそれぞれ1限からN限までに授業科目の枠があり、M個の受講可能な科目がある。

科目iは、曜日di(di = 0, 1, 2, 3, 4がそれぞれ、月曜、火曜、水曜、木曜、金曜に対応する)のai限目から始まり、連続するkiコマで行われ、それを受講したときに得られる幸福度はtiである。

各生徒は、最大L個の科目を互いに重ならないように自由に選ぶことができる。どのように科目を選べば、最も高い幸福度を得られるだろうか。与えられた科目の情報から、得られる幸福度の最大値を求めてほしい。

Input

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

N M L
d1 a1 k1 t1
d2 a2 k2 t2
...
dM aM kM tM

1行目に3つの整数N, M, Lが空白区切りで与えられる。

2行目からM+1行目に4つの整数di, ai, ki, tiが空白区切りで与えられる。

Constraints

2 ≤ N ≤ 8

0 ≤ M ≤ 300

0 ≤ L ≤ min(N×5, M)

0 ≤ di ≤ 4

1 ≤ ai ≤ N

1 ≤ ki

ai + ki - 1 ≤ N

1 ≤ ti ≤ 100

Output

幸福度の和の最大値を1行に出力せよ。

Sample Input 1

3 7 3
0 1 1 1
0 1 1 2
1 1 3 4
1 1 1 1
1 2 1 2
2 1 1 3
2 2 2 1

Sample Output 1

9

Sample Input 2

5 10 5
0 1 1 2
0 2 1 2
0 1 2 3
1 2 1 2
1 4 2 3
2 1 1 1
2 1 1 2
3 3 2 3
4 1 1 2
4 2 1 2

Sample Output 2

13
Problem D: One-Time Path

Problem

N個の島とM本の橋がある。
N個の島にはそれぞれ1からNまでの番号が割り振られている。
M本の橋にもそれぞれ1からMまでの番号が割り振られている。

がっちょ君は現在(時刻0の時点で)、1番目の島にいる。
がっちょ君はi番目の橋を利用することにより、ai番目の島からbi番目の島へと単方向に移動することができる。

しかし、時刻0の時点では、すべての橋は潮が満ちていて海の中に沈んでしまっている。
i番目の橋は、時刻ciになると潮が引いて渡れるようになる。
そして、時刻ciを過ぎると、すぐにまた潮が満ちてi番目の橋は再び沈んでしまう。
再び沈んでしまうと、またいつ潮が引いて渡れるようになるかはわからない。
そこで、がっちょ君はそうなった橋は永遠に渡れなくなると考えるようにした。

がっちょ君は、できるだけ長い間、1からN-1番目の島の景色を眺めていたいのだが、N番目の島に船を泊めてあるので、最終的にはN番目の島に到着していなければならない。また、船の中で両親を待たせているため、がっちょ君はN番目の島についたらすぐに船で出発して家へと帰らなければならない。

がっちょ君が橋を渡ったり島の中を移動する時間はとても短いので、0と仮定してよい。がっちょ君が1からN-1番目のいずれかの島にいることのできる時間の最大値を求めよ。ただし、どのように移動してもがっちょ君がN番目の島へと移動できない場合は代わりに-1を出力せよ。

Input

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

N M
a1 b1 c1
a2 b2 c2
…
aM bM cM

1行目には、2つの整数N, Mが空白区切りで与えられる。

2行目からM+1行目のそれぞれの行iには、3つの整数ai, bi, ciが空白区切りで与えられる。

Constraints

2 ≤ N ≤ 105

1 ≤ M ≤ 2 × 105

1 ≤ ai < N

1 ≤ bi ≤ N

1 ≤ ci ≤ 109

ai ≠ bi

Output

がっちょ君がN番目の島へと移動できる場合は、がっちょ君が1からN-1番目のいずれかの島にいることのできる時間の最大値を出力する。N番目の島へと移動できない場合は、代わりに-1を出力する。

Sample Input 1

3 2
1 2 10
2 3 20

Sample Output 1

20

まず、1番目の島で時刻が10になるまで待ってから、2番目の島へと移動する。

次に、2番目の島で時刻が20になるまで待ってから、3番目の島へと移動する。

以上より、1から2番目のいずれかの島にいる時間は20となる。

Sample Input 2

4 4
1 2 27
1 3 37
2 3 47
3 1 57

Sample Output 2

-1

4番目の島に繋がる橋がないため、4番目の島へ移動することができない。

Sample Input 3

3 3
1 2 13
2 3 17
2 3 15

Sample Output 3

17

Sample Input 4

3 2
1 2 20
2 3 10

Sample Output 4

-1

Sample Input 5

3 2
1 2 10
2 3 10

Sample Output 5

10
Problem E: Graph Making

Problem

どの頂点とも連結でないn個の頂点がある。

各頂点間に無向辺を張っていく。

直径がdになるようにしたとき、最大何本の辺を張ることができるか求めよ。

直径とは、2つの頂点間の最短距離のうち最大のものを表す。

ここで、最短距離は頂点間を移動するために必要な辺の数の最小値である。

多重辺、自己ループは認めない。

Input

n d

1行に2つの整数nとdが空白区切りで与えられる。

Constraints

2 ≤ n ≤ 109

1 ≤ d ≤ n−1

Output

張ることができる最大の辺の数を1行に出力せよ。

Sample Input 1

4 3

Sample Output 1

3

Sample Input 2

5 1

Sample Output 2

10

Sample Input 3

4 2

Sample Output 3

5
Problem F: Curling Puzzle

Problem

カーリングのストーンを移動させて、ゴールのマスにストーンをぴったり重ねるパズルゲームがある。詳しいルールは次のとおりである。

フィールドはH×Wのマスからなり、はじめにいくつかのマスにストーンが置かれている。
ゴールのマスは1つだけ存在して、はじめからゴールのマスにストーンが置かれていることはない。
また、フィールドは外壁で囲まれており、途中でストーンがフィールドの外へ飛び出してしまうことはない。

プレイヤーは1手ごとにストーンを1つ選び、上下左右のいずれかの方向に打ち出して滑らせることができる。
滑っているストーンは別のストーンかフィールドの外壁にぶつかるまで滑り続ける。別のストーンにぶつかった場合は、
ぶつけられた側のストーンが反動を受け、最初に打ち出した方向と同じ方向へ連鎖的に滑り出してしまう。

例えば、図1の状態でストーンAを右方向に打ち出した場合、最終的に図2のような状態になる。

図1

図2

このパズルのクリア条件は、フィールドに存在するストーンのいずれか1つをゴールのマスにぴったり重ねることである。ゴールのマスを通り過ぎた場合にはクリアにならない。

あなたの仕事はフィールドの初期状態を入力として受け取り、そのパズルがクリア可能かどうかを出力するプログラムを作成することである。

Input

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

H W
F11 F12 ... F1W
F21 F22 ... F2W
...
FH1 FH2 ... FHW

Fijは '.' か 'o' か '@' のいずれかであり、それぞれ以下の意味を持つ。
( 1 ≤ i ≤ H , 1 ≤ j ≤ W )

'.' : 空白のマス

'o' : カーリングのストーンが置かれているマス

'@' : ゴールのマス

Constraints

1 ≤ H ≤ 16

1 ≤ W ≤ 16

2 ≤ H × W ≤ 256

ゴールのマスが1つだけ存在することが保証されている

カーリングのストーンが置かれているマスが1つ以上存在することが保障されている

Output

パズルがクリア可能かどうか "yes" または "no" (""は含まない)を1行に出力せよ。

Sample Input 1

1 10
o........@

Sample Output 1

yes

Sample Input 2

3 6
......
.o..@.
......

Sample Output 2

no

Sample Input 3

6 4
....
.oo.
.oo.
....
.@..
....

Sample Output 3

yes
Problem G: Star

Problem

半径1の円に内接する正N/K角形の面積を求めよ。

ただし、正N/K角形を
「円周上に等間隔にN個の点を取り、
K-1個おきにそれぞれの点を結んだ一番外側の図形」
と定義する。

例えば、5/2角形は次のように描くことができる。
まず、半径1の円周上に等間隔に5つの点を取る。

次に、それぞれの点を2-1=1つおきに結ぶ。

一番外側の図形が正5/2角形になる。

Input

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

N K

2つの整数 N, K が1行に与えられる。

Constraints

入力は以下の制約を満たす。

5 ≤ N ≤ 106

1 < K < N/2

N,Kは互いに素である整数

Output

半径1の円に内接する正N/K角形の面積を1行に出力せよ。10-5以下の誤差が許容される。

Sample Input 1

5 2

Sample Output 1

1.12256994

正5/2角形は上記の図形である。

Sample Input 2

20 3

Sample Output 2

2.93114293

正20/3角形は下のような図形である。

Sample Input 3

7 3

Sample Output 3

1.08395920

Sample Input 4

100000 3

Sample Output 4

3.14159265
Problem H: Hogemon Get

Problem

がっちょ君は人気のゲームHogemon Getに熱中している。がっちょ君が住んでいる会津国はそれぞれ1からNの番号がついているN個の町からなる。また、会津国にはM本の道があり、すべての道は異なる2つの町を結んでいる。がっちょ君は道を双方向に移動することができるが、道以外を通って、ある町から別の町に行くことはできない。

Hogemon Getでは、町iでボールをdi個入手することができる。ただし、ある町で再びボールを入手するためには、最後にその町でボールを入手してから15分以上経過している必要がある。なお、がっちょ君は町1、町Nを含むすべての町を何度でも訪れることができる。

がっちょ君は最初、町1にいて、町NにR分以内で移動しなければならない。つまり、R分後に町Nにいる必要がある。がっちょ君は移動の際に、最大でいくつのボールを入手することができるだろうか。

Input

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

N M R
d1 d2 ... dN
a1 b1 c1
a2 b2 c2
...
aM bM cM

入力はすべて整数である。

1行目に町の個数N,道の本数M,制限時間Rが空白区切りで与えられる。

2行目に町i(i=1,2,...,N)に訪れることで入手することができるボールの個数diが空白区切りで与えられる。

3行目からM+2行目に道j(j=1,2,...,M)の情報aj,bj,cjが空白区切りで与えられる。j番目の道は町ajと町bjの間をcj分で移動できることを表す。

Constraints

3 ≤ N ≤ 30

N-1 ≤ M ≤ min(N×(N-1)/2, 300)

10 ≤ R ≤ 1000

0 ≤ di ≤ 10

d1 = dN = 0

1 ≤ aj < bj ≤ N

5 ≤ cj ≤ 100

町1から町NへはR分以内で移動できることが保証されている

ある2つの町の組に対して2本以上の道があることはない

Output

町1から町NへR分以内に移動するまでに入手することができる最大のボールの個数を1行で出力せよ。

Sample Input 1

5 4 40
0 1 1 1 0
1 2 5
2 3 5
3 4 5
4 5 5

Sample Output 1

6

経過時間(分)	町の番号	ボールの数(個)

0	1	0

5	2	1

10	3	2

15	4	3

20	3	3

25	2	4

30	3	5

35	4	6

40	5	6

※経過時間20分の町3では最後に町3でボールを入手してから15分経過していないのでボールを入手することができない。

Sample Input 2

4 3 100
0 3 1 0
1 2 5
2 3 30
3 4 5

Sample Output 2

16

経過時間(分)	町の番号	ボールの数(個)

0	1	0

5	2	3

20	2	6

35	2	9

50	2	12

65	2	15

95	3	16

100	4	16

Sample Input 3

5 4 50
0 1 1 10 0
1 2 10
2 3 10
2 4 10
4 5 10

Sample Output 3

22
Problem I: Traffic Tree

Problem

それぞれ1からNまでの番号が付いたN個の頂点が、N-1本の無向辺によって繋がれたグラフが与えられる。各頂点について、その頂点からスタートしてすべての頂点を訪れるための最短のステップ数を出力せよ。

ただし、ある頂点から1本の辺をたどって別の頂点に移動することを1ステップとする。

Input

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

N
u1 v1
.
.
.
uN−1 vN−1

1行目に、1つの整数Nが与えられる。

続くN-1行のうちi行目にはi番目の辺の両端の頂点番号を表す整数ui, viが空白区切りで与えられる。

Constraints

2 ≤ N ≤ 105

1 ≤ ui,vi ≤ N (1 ≤ i ≤ N-1)

ui ≠ vi

与えられるグラフは連結である

Output

頂点1から頂点Nについてi行目に頂点iからスタートしてすべての頂点を訪れるための最短のステップ数を出力せよ。

Sample Input 1

2
1 2

Sample Output 1

1
1

Sample Input 2

6
1 2
1 3
3 4
3 5
5 6

Sample Output 2

7
6
8
7
7
6

Sample Input2の図
Problem J: Char Swap

Problem

長さが偶数の文字列Sが与えられる。

あなたは、文字列Sの隣り合った2つの文字を入れ替える操作を何回でも行うことができる。

文字列Sを回文にするためには、最小で何回の操作を行う必要があるだろうか?

回文にすることが不可能な場合は-1を出力せよ。

Input

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

S

1行に文字列Sが与えられる。

Constraints

2 ≤ |S| ≤ 4 × 105

文字列はすべて英小文字で構成されている

文字列の長さは偶数である

Output

文字列Sを回文にするための最小の操作回数を1行に出力する。回文にすることが不可能な場合は代わりに-1を1行に出力をする。

Sample Input 1

acca

Sample Output 1

0

Sample Input 2

acpcacpc

Sample Output 2

3

Sample Input 3

aizu

Sample Output 3

-1