object Main extends App {
//	require(func("EEE") == 0)
//	require(func("EE") == 0)
//	require(func("WWW") == 0)
//	require(func("WW") == 0)
//	require(func("WWWWW") == 0)
//	require(func("EEEEE") == 0)
//	require(func("WE") == 1)
//	require(func("EW") == 0)
//	require(func("WEEWW") == 1)
//	require(func("WEWEWEEEWWWE") == 4)
//	require(func("WWWWWEEE") == 3)
//	println((0 to 30).map(_ => 'E').mkString(""))
//	val start = System.currentTimeMillis()
//	require(func((0 to 3000000).map(_ => 'E').mkString("")) == 0)
//	println("E elapsed:" + (System.currentTimeMillis() - start))
//	require(func((0 to 3000000).map(_ => 'W').mkString("")) == 0)
//	println("W elapsed:" + (System.currentTimeMillis() - start))

	private def func(input: String): Int = {
		val bits = new java.util.BitSet(400000)
		input.foldLeft(0) { (i, e) =>
			bits.set(i, e == 'W')
			i + 1
		}
		subbb(input.length, bits)
	}

	private def subbb(len: Int, bits: java.util.BitSet) = {
		@inline def count(s: Int, e: Int): Int = {
			bits.get(s, e).cardinality
		}

		val init = len - 1 - count(1, len)
		var min = init
		(1 until len).foldLeft(init) { (prev, i) =>
			val cur = prev + (if (bits.get(i - 1)) 1 else 0) + (if (bits.get(i)) 0 else -1)
			//println(prev, cur)
			min = Math.min(min, cur)
			cur
		}
		//println(min)
		min
	}

	println(func(scala.io.Source.stdin.getLines().toArray.apply(1)))
}
