#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
pll mergeSeg(pll a, pll b) {
return { max(a.first, a.second + b.first), a.second + b.second };
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll N; int M;
cin >> N >> M;
pll cur = {0,0}; // (max_prefix, sum)
for(int i=0;i<M;i++){
string s; ll k;
cin >> s >> k;
ll sum = 0, mx = 0;
for(char c : s){
sum += (c=='F' ? 1 : -1);
mx = max(mx, sum);
}
pll block = {mx, sum};
// binary lifting 방식으로 block^k 병합
pll pw = block;
for(int bit=0; (1LL<<bit) <= k; bit++){
if(k & (1LL<<bit)) cur = mergeSeg(cur, pw);
pw = mergeSeg(pw, pw);
}
}
if(cur.second < 0) { // sum < 0 → 불가능
cout << -1 << "\n";
return 0;
}
ll ans = max(0LL, cur.first - cur.second - 1);
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKCnBsbCBtZXJnZVNlZyhwbGwgYSwgcGxsIGIpIHsKICAgIHJldHVybiB7IG1heChhLmZpcnN0LCBhLnNlY29uZCArIGIuZmlyc3QpLCBhLnNlY29uZCArIGIuc2Vjb25kIH07Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGxsIE47IGludCBNOwogICAgY2luID4+IE4gPj4gTTsKCiAgICBwbGwgY3VyID0gezAsMH07IC8vIChtYXhfcHJlZml4LCBzdW0pCiAgICBmb3IoaW50IGk9MDtpPE07aSsrKXsKICAgICAgICBzdHJpbmcgczsgbGwgazsKICAgICAgICBjaW4gPj4gcyA+PiBrOwogICAgICAgIGxsIHN1bSA9IDAsIG14ID0gMDsKICAgICAgICBmb3IoY2hhciBjIDogcyl7CiAgICAgICAgICAgIHN1bSArPSAoYz09J0YnID8gMSA6IC0xKTsKICAgICAgICAgICAgbXggPSBtYXgobXgsIHN1bSk7CiAgICAgICAgfQogICAgICAgIHBsbCBibG9jayA9IHtteCwgc3VtfTsKCiAgICAgICAgLy8gYmluYXJ5IGxpZnRpbmcg67Cp7Iud7Jy866GcIGJsb2NrXmsg67OR7ZWpCiAgICAgICAgcGxsIHB3ID0gYmxvY2s7CiAgICAgICAgZm9yKGludCBiaXQ9MDsgKDFMTDw8Yml0KSA8PSBrOyBiaXQrKyl7CiAgICAgICAgICAgIGlmKGsgJiAoMUxMPDxiaXQpKSBjdXIgPSBtZXJnZVNlZyhjdXIsIHB3KTsKICAgICAgICAgICAgcHcgPSBtZXJnZVNlZyhwdywgcHcpOwogICAgICAgIH0KICAgIH0KCiAgICBpZihjdXIuc2Vjb25kIDwgMCkgeyAvLyBzdW0gPCAwIOKGkiDrtojqsIDriqUKICAgICAgICBjb3V0IDw8IC0xIDw8ICJcbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBsbCBhbnMgPSBtYXgoMExMLCBjdXIuZmlyc3QgLSBjdXIuc2Vjb25kIC0gMSk7CiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0=