Flags
TopCoder SRM 792
Time Limit: 1.5s, Memory Limit: 256MiB
Ели има бял лист на квадратчета с N реда и M колони. Докато с едно ухо слушаше учителката по време на поредния скучен час, момичето оцветяваше произволни квадратчета в зелено и червено. По някое време тя видя, че листът ѝ е пълен с български флагове! Ели казва, че е нарисувала "флаг", ако три последователни квадратчета отивайки само надолу и надясно (всяко споделящо страна със следващото) са, съответно, бяло, зелено и червено. Така има четири типа "флаг":

W
G
R
W G R
W ?
G R
W G
? R

Забележете, че няколко флага могат да споделят клетки. Например, в следната конфигурация има общо шест флага, три от които започват от бялата клетка в горния ляв ъгъл:

W G W W R
G R G R G
R W G R W
G G W G R

Сега Ели се зачуди колко най-много флагове може да получи, ако оцвети някои (потенциално нито една) от останалите бели клетки в зелено и червено? Забележете, че момичето не може да завърта листа или да преоцветява вече оцветени клетки.
Вход
На първия ред на стандартния вход ще бъдат зададени двете цели числа N и M - броя редове и колони на листа. На следващите N реда ще има по един стринг с M символа 'W', 'G', или 'R', задаващи, съответно, бяла, зелена и червена клетка.
Изход
На стандартния изход изведете едно цяло число - максималния брой флагове, които могат да се получат при оцветяване на останалите бели клетки по оптимален начин.
Ограничения
  • 1 ≤ N, M ≤ 10
Примерен Вход Примерен Изход
4 5 WGWWR GRGRG RWGRW GGWGR 9
Можем да оцветим клетката на първи ред, четвърта колона в зелено, получавайки още два флага. Допълнително, оцветявайки клетката на четвърти ред, трета колона в червено губим един от досегашните флагове, но получаваме два нови на негово място.
Мрън!