#include <string>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
class ConundrumReloaded{
public :
int minimumLiars( string answers) {
vector< string> v;
string s;
int f= 0 ;
int INF= ( 1 << 28 ) ;
for ( int i= 0 ; i< answers.size ( ) ; i++ ) {
if ( answers[ i] == '?' ) {
f = 1 ;
if ( s.size ( ) > 0 ) {
v.push_back ( s ) ; s = "" ;
}
} else {
s + = answers[ i] ;
}
}
if ( s.size ( ) > 0 ) {
if ( answers[ 0 ] == '?' ) v.push_back ( s ) ;
else if ( v.size ( ) == 0 ) v.push_back ( s ) ;
else v[ 0 ] = s + v[ 0 ] ;
}
int ret = 0 ;
for ( auto it= v.begin ( ) ; it! = v.end ( ) ; ++ it ) {
s = * it;
cout << s << endl;
int d0= 0 ,d1= 1 ;
char c0= 'H' ,c1= 'L' ;
for ( int i= 0 ; i< s.size ( ) ; i++ ) {
c0 = ( c0== s[ i] ) ? 'H' : 'L' ;
c1 = ( c1== s[ i] ) ? 'H' : 'L' ;
if ( c0 == 'L' ) d0++ ;
if ( c1 == 'L' ) d1++ ;
cout << c0 << c1 << ' ' ;
}
if ( ! f && c0! = 'H' ) d0 = INF;
if ( ! f && c1! = 'L' ) d1 = INF;
if ( ! f && d1 ! = INF && c1== 'L' ) d1-- ;
if ( d0 == INF && d1 == INF ) ret = - 1 ;
else ret + = min( d0, d1 ) ;
}
return ret;
}
} ;
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBDb251bmRydW1SZWxvYWRlZHsKcHVibGljOgogIGludCBtaW5pbXVtTGlhcnMoc3RyaW5nIGFuc3dlcnMpewogICAgdmVjdG9yPHN0cmluZz4gdjsKICAgIHN0cmluZyBzOwogICAgaW50IGY9MDsKICAgIGludCBJTkY9KDE8PDI4KTsKICAgIGZvciggaW50IGk9MDsgaTxhbnN3ZXJzLnNpemUoKTsgaSsrICl7CiAgICAgIGlmKCBhbnN3ZXJzW2ldID09ICc/JyApewogICAgICAgIGYgPSAxOwogICAgICAgIGlmKCBzLnNpemUoKSA+IDAgKXsKICAgICAgICAgIHYucHVzaF9iYWNrKCBzICk7IHMgPSAiIjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcyArPSBhbnN3ZXJzW2ldOwogICAgICB9CiAgICB9CiAgICBpZiggcy5zaXplKCkgPiAwICl7CiAgICAgIGlmKCBhbnN3ZXJzWzBdID09ICc/JyApIHYucHVzaF9iYWNrKCBzICk7CiAgICAgIGVsc2UgaWYoIHYuc2l6ZSgpID09IDAgKSB2LnB1c2hfYmFjayggcyApOwogICAgICBlbHNlIHZbMF0gPSBzICsgdlswXTsKICAgIH0KICAgIGludCByZXQgPSAwOwogICAgZm9yKCBhdXRvIGl0PXYuYmVnaW4oKTsgaXQhPXYuZW5kKCk7ICsrIGl0ICl7CiAgICAgIHMgPSAqaXQ7CiAgICAgIGNvdXQgPDwgcyA8PCBlbmRsOwogICAgICBpbnQgZDA9MCxkMT0xOwogICAgICBjaGFyIGMwPSdIJyxjMT0nTCc7CiAgICAgIGZvciggaW50IGk9MDsgaTxzLnNpemUoKTsgaSsrICl7CiAgICAgICAgYzAgPSAoYzA9PXNbaV0pID8gJ0gnIDogJ0wnOwogICAgICAgIGMxID0gKGMxPT1zW2ldKSA/ICdIJyA6ICdMJzsKICAgICAgICBpZiggYzAgPT0gJ0wnICkgZDArKzsKICAgICAgICBpZiggYzEgPT0gJ0wnICkgZDErKzsKICAgICAgICBjb3V0IDw8IGMwIDw8IGMxIDw8ICcgJzsKICAgICAgfQogICAgICBpZiggIWYgJiYgYzAhPSdIJyApIGQwID0gSU5GOwogICAgICBpZiggIWYgJiYgYzEhPSdMJyApIGQxID0gSU5GOwogICAgICBpZiggIWYgJiYgZDEgIT0gSU5GICYmIGMxPT0nTCcgKSBkMS0tOwogICAgICBpZiggZDAgPT0gSU5GICYmIGQxID09IElORiApIHJldCA9IC0xOwogICAgICBlbHNlIHJldCArPSBtaW4oIGQwLCBkMSApOwogICAgfQogICAgcmV0dXJuIHJldDsKICB9Cn07