Given is a string S of length N consisting of lowercase English letters.
Snuke can do this operation any number of times: remove fox occurring as a substring from s and concatenate the remaining parts of s.
What is the minimum possible length of s after some number of operations by Snuke?

-----Constraints-----
 - 1 \leq N \leq 2 \times 10^{5}
 - s is a string of length N consisting of lowercase English letters.

-----Input-----
Input is given from Standard Input in the following format:
N
s

-----Print-----
Print the minimum possible length of s after some number of operations by Snuke.

-----Sample Input-----
6
icefox

-----Sample Output-----
3

 - By removing the fox at the end of icefox, we can turn s into ice.

Difficulty: MEDIUM_HARD

Starter code:

Solutions:
import sys
readline = sys.stdin.readline
N = int(readline())
S = readline().rstrip()
ans = N
stack = []
for s in S:
	if s == 'f':
		stack.append(0)
	elif s == 'o':
		if stack and stack[-1] == 0:
			stack[-1] = 1
		else:
			stack = []
	elif s == 'x':
		if stack and stack[-1] == 1:
			stack.pop()
			ans -= 3
		else:
			stack = []
	else:
		stack = []
print(ans)


input()
a = input()
res = ''
for c in a:
	res += c
	if res.endswith('fox'):
		res = res[:-3]
print(len(res))


N = int(input())
S = input()
T = ''
for s in S:
	if s in 'fox':
		T += s
		if T[-3:] == 'fox':
			T = T[:-3]
			N -= 3
	else:
		T = ''
print(N)


from collections import deque

def remove_fox(stack):
	if len(stack) < 3:
		return
	(p1, p2, p3) = (stack.pop(), stack.pop(), stack.pop())
	jd = p3 + p2 + p1
	if jd != 'fox':
		stack.append(p3)
		stack.append(p2)
		stack.append(p1)

def __starting_point():
	n = int(input())
	s = input()
	t = deque()
	for si in s:
		t.append(si)
		remove_fox(t)
	print(len(t))
__starting_point()


n = int(input())
s = input()
s2 = []
for i in range(n):
	s2.append(s[i])
	while len(s2) > 2:
		if s2[-1] == 'x' and s2[-2] == 'o' and (s2[-3] == 'f'):
			s2.pop()
			s2.pop()
			s2.pop()
		else:
			break
while len(s2) > 2:
	if s2[-1] == 'x' and s2[-2] == 'o' and (s2[-3] == 'f'):
		s2.pop()
		s2.pop()
		s2.pop()
	else:
		break
print(len(s2))


n = int(input())
s = input()
t = ''
for c in s:
	t += c
	if t[-3:] == 'fox':
		t = t[:-3]
print(len(t))


N = int(input())
s = input()
i = 0
while i < len(s) - 2:
	if s[i:i + 3] == 'fox':
		s = s[:i] + s[i + 3:]
		i -= 2
	else:
		i += 1
print(len(s))


N = int(input())
array = input()
trash = []
count = 0
for i in range(N):
	trash.append(array[i])
	count += 1
	if count >= 3:
		if trash[-1] == 'x' and trash[-2] == 'o' and (trash[-3] == 'f'):
			del trash[-1]
			del trash[-1]
			del trash[-1]
			count -= 3
print(count)


N = int(input())
s = input()
que = []
for i in range(N):
	que.append(s[i])
	if len(que) >= 3 and que[-3:] == ['f', 'o', 'x']:
		que.pop()
		que.pop()
		que.pop()
print(len(que))


n = int(input())
s = input()
t = ''
for i in range(n):
	t += s[i]
	while len(t) >= 3 and t[-3:] == 'fox':
		t = t[:-3]
print(len(t))


N = int(input())
r = []
for i in list(input()):
	r.append(i)
	while 1:
		if 3 <= len(r) and r[len(r) - 3:] == ['f', 'o', 'x']:
			for j in range(3):
				r.pop()
		else:
			break
print(len(r))


N = int(input())
S = list(input())
L = []
for s in S:
	if len(L) >= 2 and s == 'x':
		if L[-2] == 'f' and L[-1] == 'o':
			L.pop()
			L.pop()
		else:
			L.append(s)
	else:
		L.append(s)
print(len(L))


n = int(input())
s = input()
ans = ''
for i in s:
	ans += i
	if ans[-3:] == 'fox':
		ans = ans[:-3]
print(len(ans))


from collections import deque
n = int(input())
S = input()
index = 0
cnt = 0
q = deque()
q.append(index)
for s in S:
	if s == 'f':
		index = 1
		q.append(index)
	elif s == 'o':
		index = q.pop()
		if index == 1:
			index = 2
		else:
			index = 0
		q.append(index)
	elif s == 'x':
		index = q.pop()
		if index == 2:
			cnt += 1
		else:
			index = 0
			q.append(index)
	else:
		index = q.pop()
		index = 0
		q.append(index)
ans = n - 3 * cnt
print(ans)


n = int(input())
s = input()
ls = []
for i in range(n):
	ls.append(s[i])
	if len(ls) > 2:
		if ls[-3] == 'f' and ls[-2] == 'o' and (ls[-1] == 'x'):
			n -= 3
			ls.pop()
			ls.pop()
			ls.pop()
print(n)


n = int(input())
s = input()
tmp = []
for i in s:
	tmp.append(i)
	if len(tmp) >= 3:
		if tmp[-3:] == ['f', 'o', 'x']:
			tmp.pop()
			tmp.pop()
			tmp.pop()
print(len(tmp))


n = int(input())
s = input()
t = []
for i in range(n):
	t.append(s[i])
	if len(t) >= 3 and t[-3:] == ['f', 'o', 'x']:
		t.pop()
		t.pop()
		t.pop()
print(len(t))


n = int(input())
s = input()
t = ''
for c in s:
	t += c
	while len(t) >= 3 and t[-3:] == 'fox':
		t = t[:-3]
print(len(t))


_ = input()
s1 = list(input())
s2 = []
for c in s1:
	try:
		if c == 'x' and s2[-1] == 'o' and (s2[-2] == 'f'):
			s2.pop()
			s2.pop()
		else:
			s2.append(c)
	except:
		s2.append(c)
print(len(s2))


import sys
N = int(input())
s = input()
t = ''
for c in s:
	t += c
	if t.endswith('fox'):
		t = t[:len(t) - 3]
print(len(t))


N = int(input())
S = input()
R = ''
rep = 'fox'
nxt = 0
ans = 0
for i in range(N):
	found = False
	for k in range(3):
		if S[i] == rep[k]:
			R += rep[k]
			found = True
	if not found:
		R = ''
	if R[-3:] == rep:
		ans += 1
		R = R[:-3]
print(N - ans * 3)


ans = int(input())
S = input()
stack = []
for c in S:
	stack.append(c)
	if 3 <= len(stack) and stack[-3] == 'f' and (stack[-2] == 'o') and (stack[-1] == 'x'):
		stack.pop()
		stack.pop()
		stack.pop()
		ans -= 3
print(ans)


n = int(input())
s = list(input())
ans = []
for c in s:
	ans.append(c)
	if ''.join(ans[-3:]) == 'fox':
		ans.pop()
		ans.pop()
		ans.pop()
print(len(ans))


N = int(input())
S = input()
T = []
n = 0
for s in S:
	T.append(s)
	if T[-3:] == ['f', 'o', 'x']:
		T.pop()
		T.pop()
		T.pop()
		n += 1
print(len(S) - 3 * n)


from collections import deque
n = int(input())
s = deque(list(input()))
ans = deque()
while s:
	ans.append(s.popleft())
	if len(ans) >= 3:
		if ans[-3] == 'f' and ans[-2] == 'o' and (ans[-1] == 'x'):
			for _ in range(3):
				ans.pop()
print(len(ans))


A = input()
B = input()
if int(A) == len(B):
	x = ''
	for i in B:
		x += i
		if x[-3:] == 'fox':
			x = x[0:len(x) - 3]
	print(len(x))


n = int(input())
S = input()
ans = ''
for s in S:
	ans += s
	if ans[-3:] == 'fox':
		ans = ans[0:-3]
print(len(ans))


n = int(input())
s = list(input())
t = []
for i in range(n):
	t.append(s[i])
	if len(t) >= 3 and t[-3] + t[-2] + t[-1] == 'fox':
		t.pop(-1)
		t.pop(-1)
		t.pop(-1)
print(len(t))


l = int(input())
text = input()
(tgt, ans) = ('fox', '')
for i in range(l):
	ans += text[i]
	if ans[-3:] == tgt:
		ans = ans[:-3]
print(len(ans))


N = int(input())
s = input()
t = ''
for i in range(len(s)):
	t += s[i]
	if t.endswith('fox'):
		t = t[:-3]
print(len(t))


def main():
	_ = int(input())
	s = input()
	st = []
	for c in s:
		if c == 'x':
			if len(st) >= 2 and st[-1] == 'o' and (st[-2] == 'f'):
				for _ in range(2):
					st.pop()
				continue
		st.append(c)
	ans = len(st)
	print(ans)

def __starting_point():
	main()
__starting_point()


n = int(input())
s = list(input())
from collections import deque
q = deque(s)
p = []
while q:
	a = q.popleft()
	if a != 'x':
		p.append(a)
		continue
	try:
		f = p[-2]
		o = p[-1]
		if f == 'f' and o == 'o':
			p.pop()
			p.pop()
			continue
	except:
		pass
	p.append(a)
print(len(p))


n = int(input())
s = list(input())
from collections import deque
q = deque()
ans = n
for i in range(n):
	q.append(s[i])
	if len(q) <= 2:
		continue
	a = q.pop()
	b = q.pop()
	c = q.pop()
	if c + b + a == 'fox':
		ans -= 3
	else:
		q.append(c)
		q.append(b)
		q.append(a)
print(ans)


n = int(input())
s = list(input())
cnt = 0
while True:
	for i in range(cnt, len(s) - 2):
		if s[i:i + 3] == ['f', 'o', 'x']:
			del s[i:i + 3]
			cnt = max(0, i - 3)
			break
	else:
		break
print(len(s))


n = int(input())
s = input()
t = ''
for i in range(n):
	t += s[i]
	if t[len(t) - 3:] == 'fox':
		t = t[:len(t) - 3]
print(len(t))


n = int(input())
s = input()
index = 0
while index < n:
	if s[index:index + 3] == 'fox':
		s = s[0:index] + s[index + 3:len(s)]
		index -= 2
	else:
		index += 1
print(len(s))


def resolve():
	N = int(input())
	S = list(input())
	if N < 3:
		print(N)
	else:
		now = S[:2]
		ans = 0
		for i in range(2, len(S)):
			now.append(S[i])
			if now[-3:] == ['f', 'o', 'x']:
				now.pop()
				now.pop()
				now.pop()
				ans += 3
		print(N - ans)
resolve()


N = int(input())
S = input()
T = ''
for i in range(N):
	T = T + S[i]
	if len(T) > 2:
		if T[-3] == 'f' and T[-2] == 'o' and (T[-1] == 'x'):
			T = T[:-3]
print(len(T))


N = int(input())
S = input()
ans = 0
que = ''
for s in S:
	if s in ['f', 'o']:
		que = ''.join([que, s])
	elif s == 'x':
		if len(que) >= 2 and que[-2:] == 'fo':
			ans += 1
			que = que[:-2]
		else:
			que = ''
	else:
		que = ''
print(N - 3 * ans)


def main():
	N = int(input())
	S = input()
	stack = []
	cur = 0
	ans = N
	for c in S:
		if c == 'f' and cur != 0:
			stack.append(cur)
			cur = 1
		elif c == 'f' and cur == 0:
			cur += 1
		elif c == 'o' and cur == 1:
			cur += 1
		elif c == 'x' and cur == 2:
			ans -= 3
			if len(stack):
				cur = stack.pop()
			else:
				cur = 0
		else:
			cur = 0
			stack = []
	print(ans)

def __starting_point():
	main()
__starting_point()


n = int(input())
s = input()
l = []
for i in range(n):
	l.append(s[i])
	if len(l) >= 3 and ''.join(l[-3:]) == 'fox':
		l.pop()
		l.pop()
		l.pop()
print(len(l))


n = int(input())
s = input().strip()
from collections import deque
d = deque([])
t = []
ct = 0
for i in s:
	d.append(i)
while len(d) != 0:
	ch = d.popleft()
	t.append(ch)
	if len(t) >= 3 and t[-3:] == ['f', 'o', 'x']:
		t.pop()
		t.pop()
		t.pop()
		ct += 1
print(len(t))


N = int(input())
S = input()
a = ''
for i in range(N):
	a += S[i]
	if len(a) >= 3 and a[-3] + a[-2] + a[-1] == 'fox':
		a = a[:-3]
print(len(a))


n = int(input())
s = input()
t = ''
cnt = 0
for si in s:
	t += si
	if len(t) >= 3 and t[-3:] == 'fox':
		cnt += 1
		t = t[:-3]
print(n - cnt * 3)


def main():
	n = int(input())
	s = str(input())
	num = len(s)
	n = 0
	while True:
		if n + 3 > num:
			break
		if s[n:n + 3] == 'fox':
			s = s[:n] + s[n + 3:]
			n = max(0, n - 3)
		else:
			n += 1
	print(len(s))

def __starting_point():
	main()
__starting_point()


n = int(input())
s = input()
tmp = ''
result = 0
for word in s:
	tmp += word
	if tmp[-3:] == 'fox':
		result += 1
		tmp = tmp[:-3]
print(len(tmp))


n = int(input())
s = input()
l = []
l.append(1)
for i in range(n):
	if l[-1] == 'o':
		if l[-2] == 'f' and s[i] == 'x':
			l.pop()
			l.pop()
		else:
			l.append(s[i])
	else:
		l.append(s[i])
print(len(l) - 1)


n = int(input())
s = list(input())
from collections import deque
ss = deque(s)
t = deque()
for i in range(n):
	p = ss.popleft()
	t.append(p)
	if len(t) > 2 and t[-3] == 'f' and (t[-2] == 'o') and (t[-1] == 'x'):
		t.pop()
		t.pop()
		t.pop()
print(len(t))


n = int(input())
s = input()
cnt = 0
a = []
for i in range(n):
	a.append(s[i])
	if len(a) >= 3 and a[-3] == 'f' and (a[-2] == 'o') and (a[-1] == 'x'):
		for _ in range(3):
			a.pop()
print(len(a))


n = int(input())
s = str(input())
stack = []
for c in s:
	if c == 'x':
		if len(stack) < 2:
			stack.append(c)
		elif stack[-2] == 'f' and stack[-1] == 'o':
			stack.pop()
			stack.pop()
		else:
			stack.append(c)
	else:
		stack.append(c)
print(len(stack))


def main():
	import sys
	input = sys.stdin.readline
	N = int(input())
	S = input().strip()
	lenS = len(S)
	i = 1
	while i < lenS - 1:
		if S[i] == 'f':
			i += 1
			continue
		if S[i] != 'o':
			i += 2
			continue
		if S[i - 1] == 'f' and S[i + 1] == 'x':
			lenS -= 3
			S = S[:i - 1] + S[i + 2:]
			i = max(1, i - 2)
		else:
			i += 2
	print(lenS)

def __starting_point():
	main()
__starting_point()


n = int(input())
l = list(input())
t = []
for i in range(n):
	t.append(l[i])
	if len(t) >= 3 and t[-3:] == ['f', 'o', 'x']:
		for j in range(3):
			t.pop()
print(len(t))


n = int(input())
s = input()
t = ''
x = 0
for i in range(n):
	t += s[i]
	x += 1
	if x >= 3 and t[-3:] == 'fox':
		t = t[:-3]
		x -= 3
ans = len(t)
print(ans)


N = int(input())
S = input()
a = ''
for i in range(N):
	a += S[i]
	if 'fox' == a[-3:]:
		a = a[:-3]
print(len(a))


N = int(input())
S = ''.join(input().split('fox'))
T = ''
for s in S:
	T += s
	if T[len(T) - 3:len(T)] == 'fox':
		T = T[:len(T) - 3]
print(len(T))


from collections import Counter, defaultdict, deque
from heapq import heappop, heappush, heapify
from bisect import bisect_left, bisect_right
import sys, math, itertools, fractions, pprint
from typing import Union
sys.setrecursionlimit(10 ** 8)
mod = 10 ** 9 + 7
INF = float('inf')

def inp():
	return int(sys.stdin.readline())

def inpl():
	return list(map(int, sys.stdin.readline().split()))
n = inp()
s = list(input())
res = []
for (i, x) in enumerate(s):
	res.append(x)
	ln = len(res)
	if ln >= 3 and res[ln - 3:ln] == ['f', 'o', 'x']:
		for _ in range(3):
			res.pop()
print(len(res))


N = int(input())
s = input()
t = ''
while len(s):
	t += s[0]
	s = s[1:]
	if t[-3:] == 'fox':
		t = t[:-3]
print(len(t))


N = int(input())
s = list(input())
stack = []
cnt = 0
for i in range(N):
	if s[i] == 'f':
		stack.append('f')
	elif s[i] == 'o' and len(stack) >= 1:
		if not stack[-1] == 'f':
			stack = []
		else:
			stack.append('o')
	elif s[i] == 'x' and len(stack) >= 2:
		if stack[-2] == 'f' and stack[-1] == 'o':
			stack.pop()
			stack.pop()
			cnt += 1
		else:
			stack = []
	else:
		stack = []
print(N - 3 * cnt)


N = int(input())
s = input()
tmp = ''
for i in s:
	tmp += i
	if len(tmp) >= 3 and tmp[-3] + tmp[-2] + tmp[-1] == 'fox':
		tmp = tmp[:-3]
print(len(tmp))


n = int(input())
s = input()
stk = []
cnt = 0
for i in s:
	if i in ['f', 'o', 'x']:
		stk.append(i)
	else:
		stk = []
	if i == 'x':
		if len(stk) >= 3 and stk[-1] == 'x' and (stk[-2] == 'o') and (stk[-3] == 'f'):
			stk.pop()
			stk.pop()
			stk.pop()
			cnt += 1
print(n - 3 * cnt)


N = int(input())
S = input()
ans = ''
for s in S:
	ans += s
	if ans[-3:] == 'fox':
		ans = ans[:-3]
print(len(ans))


import sys
input = sys.stdin.readline
N = int(input())
S = input()
cnt = 0
tmp = []
for s in S:
	tmp.append(s)
	if len(tmp) <= 2:
		continue
	elif tmp[-1] == 'x' and tmp[-2] == 'o' and (tmp[-3] == 'f'):
		cnt += 1
		for _ in range(3):
			tmp.pop()
print(N - cnt * 3)


import os
import sys

def main():
	N = int(input())
	S = input()
	T = ''
	for s in S:
		T += s
		if len(T) >= 3 and T[-3:] == 'fox':
			T = T[:-3]
	print(len(T))

def __starting_point():
	main()
__starting_point()


def solve():
	n = int(input())
	s = input()
	stack = []
	for c in s:
		if c == 'x' and len(stack) >= 2 and (stack[-1] == 'o') and (stack[-2] == 'f'):
			stack.pop()
			stack.pop()
		else:
			stack.append(c)
	print(len(stack))
solve()


n = int(input())
s = input() + 'zzz'
t = 'zzz'
ans = n
cnt = 0
for i in range(n):
	if cnt >= n + 1:
		break
	if s[cnt:cnt + 3] == 'fox':
		ans -= 3
		cnt += 3
	else:
		t += s[cnt]
		cnt += 1
		if t[-3:] == 'fox':
			ans -= 3
			t = t[:-3]
print(ans)


N = int(input())
S = input()
R = ''
rep = 'fox'
nxt = 0
ans = 0
for i in range(N):
	R += S[i]
	if len(R) >= 3 and R[-3:] == rep:
		R = R[:-3]
print(len(R))


n = int(input())
s = input()
stack = []
for i in range(n):
	stack.append(s[i])
	while stack[-3:] == ['f', 'o', 'x']:
		stack.pop()
		stack.pop()
		stack.pop()
print(len(stack))


n = int(input())
s = input()
q = ''
sub = 0
for i in s:
	q += i
	if len(q) >= 3 and q[-3:] == 'fox':
		sub += 3
		q = q[:-3]
print(n - sub)


n = int(input())
s = list(input())
a = []
b = 0
for i in s:
	a.append(i)
	b += 1
	if b > 2:
		if a[-3:] == ['f', 'o', 'x']:
			del a[-3:]
			b -= 3
print(b)


import sys
readline = sys.stdin.readline
N = int(readline())
S = readline().rstrip()
T = ''
for s in S:
	T += s
	if len(T) >= 3 and T[-3:] == 'fox':
		T = T[:-3]
print(len(T))


def main():
	N = int(input())
	ans = N
	stack = []
	s = input()
	for c in s:
		if c == 'f' or c == 'o' or c == 'x':
			stack.append(c)
		else:
			stack.clear()
		if c == 'x':
			if len(stack) >= 3 and stack[-2] == 'o' and (stack[-3] == 'f'):
				ans -= 3
				for i in range(3):
					stack.pop()
	return print(ans)

def __starting_point():
	main()
__starting_point()


length = int(input())
string = input()
ans = []
for index in range(length):
	if string[index] == 'x' and len(ans) >= 2:
		if ans[len(ans) - 2] == 'f' and ans[len(ans) - 1] == 'o':
			ans.pop()
			ans.pop()
		else:
			ans.append(string[index])
	else:
		ans.append(string[index])
print(len(ans))


n = int(input())
s = input()
t = ''
cnt = 0
while len(s) > 0:
	t += s[0]
	s = s[1:]
	if len(t) >= 3 and t[-3:] == 'fox':
		cnt += 1
		t = t[:-3]
ans = n - 3 * cnt
print(ans)


n = int(input())
s = input()
stack = []
ans = 0
for i in range(n):
	if s[i] == 'f':
		stack.append('f')
	elif s[i] == 'o':
		stack.append('o')
	elif s[i] == 'x':
		if len(stack) >= 2:
			if stack[-1] == 'o' and stack[-2] == 'f':
				ans += 1
				stack.pop()
				stack.pop()
			else:
				stack.clear()
		else:
			stack.clear()
	else:
		stack.clear()
print(n - ans * 3)


from collections import deque
n = int(input())
s = input()
l_s = len(s)
cnt = 0
d = deque()
for i in s:
	if i == 'x':
		if len(d) > 1:
			o = d.pop()
			f = d.pop()
			if o == 'o' and f == 'f':
				cnt += 1
			else:
				d.append(f)
				d.append(o)
				d.append(i)
		else:
			d.append(i)
	else:
		d.append(i)
print(l_s - 3 * cnt)


N = int(input())
s = input()
ps = ''
for c in s:
	ps += c
	if ps[len(ps) - 3:len(ps)] == 'fox':
		ps = ps[0:len(ps) - 3]
print(len(ps))


n = int(input())
s = input()
ss = s[:2]
s = s[2:]
for x in s:
	if ss[-2:] + x == 'fox':
		ss = ss[:-2]
	else:
		ss += x
print(len(ss))