#include <bits/stdc++.h>
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
const long long MOD = 1000000007;
const long long INF = 0x3f3f3f3f;
using namespace std;
map<long long, long long> mp;
using Graph = vector<vector<long long>>;
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
  long long g = gcd(a, b);
  return a / g * b;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  string s;
  cin >> s;
  long long scnt = 0;
  long long tcnt = 0;
  long long ans = s.size();
  bool flag = false;
  bool find = false;
  for (long long i = 0; i < s.size(); i++) {
    if (flag) {
      if (s.at(i) == 'S') {
        if (find) {
          scnt++;
        } else {
          ans -= tcnt * 2;
          find = true;
        }
      } else {
        if (find) {
          tcnt++;
          if (scnt == tcnt) {
            ans -= scnt * 2;
          }
        } else {
          find = false;
        }
      }
    } else {
      if (s.at(i) == 'S') {
        flag = true;
        scnt++;
        find = true;
      }
    }
  }
  if (ans > 0)
    cout << ans << endl;
  else
    cout << 0 << endl;
  return 0;
}
