import sys # sys.setrecursionlimit(200005) int1 = lambda x: int(x)-1 pDB = lambda *x: print(*x, end="\n", file=sys.stderr) p2D = lambda x: print(*x, sep="\n", end="\n\n", file=sys.stderr) def II(): return int(sys.stdin.readline()) def LI(): return list(map(int, sys.stdin.readline().split())) def LLI(rows_number): return [LI() for _ in range(rows_number)] def LI1(): return list(map(int1, sys.stdin.readline().split())) def LLI1(rows_number): return [LI1() for _ in range(rows_number)] def SI(): return sys.stdin.readline().rstrip() dij = [(0, 1), (-1, 0), (0, -1), (1, 0)] # dij = [(0, 1), (-1, 0), (0, -1), (1, 0), (1, 1), (1, -1), (-1, 1), (-1, -1)] inf = (1 << 63)-1 # inf = (1 << 31)-1 md = 10**9+7 # md = 998244353 def pack(ii): p = 0 for i in ii: p = p*m1+i return p def unpack(p): ii = [0]*4 for j in range(4): p, i = divmod(p, m1) ii[j] = i return ii[::-1] s = [] for c in SI(): c = "KUROI?".find(c) if c == -1: continue s.append(c) m = len(s)//5 m1 = m+1 n = m1**4 dp = [-1]*n dp[0] = 0 def upd(c): np, d = p, 0 if c == 0: if ii[0] != m: ii[0] += 1 np = pack(ii) ii[0] -= 1 elif c == 4: if ii[3]: ii[3] -= 1 np = pack(ii) ii[3] += 1 d = 1 else: if ii[c] < m and ii[c-1]: ii[c] += 1 ii[c-1] -= 1 np = pack(ii) ii[c] -= 1 ii[c-1] += 1 ndp[np] = max(ndp[np], dp[p]+d) for c in s: ndp = [-1]*n for p in range(n): if dp[p] == -1: continue ii = unpack(p) if c == 5: for a in range(5): upd(a) else: upd(c) dp = ndp print(max(dp))