# input()
# int(input())
# map(int, input().split())
# list(map(int, input().split()))
import math
import sys
import bisect
import heapq  # 優先度付きキュー(最小値取り出し)
from collections import deque
inf = 10 ** 15
mod = 10 ** 9 + 7
s = input()
n = len(s)
# 区間DP ダルマ落とし
dp = [[0 for j in range(n)]for i in range(n)] # iからjまで崩せる最大値 (0オリジン)
for k in range(1,n):  # 区間長1からn-1
    for i in range(0,n-k):  # i が区間の始まり   i+k が区間の終わり
        # 両端が揃ったら消せる かつ 間が全部消えるなら
        if s[i] == 'S' and s[i+k] == 'T' and dp[i+1][i+k-1] == k-1:
            dp[i][i+k] = dp[i+1][i+k-1] + 2
        else:
            # i+j が区間を区切るところ(i+jは左側に含まれる)  | i ~ i+j  |  i+j+1 ~ i+k | で考えてる。
            # 今回は今回はダルマを崩す順番の問題
            for j in range(k):
                dp[i][i+k] = max(dp[i][i+k], dp[i][i+j] + dp[i+j+1][i+k])
print(n-dp[0][n-1])