fun main(args: Array<String>) {
    val n = readLine()?.toInt() ?: return
    val sList = readLine()?.toCharArray() ?: return

    // 西から東方向へ見ていったときの、各項のE,Wの累積Listを作る
    val wToEList = mutableListOf<Pair<Int, Int>>().apply {
        if (sList[0] == 'E') {
            add(1 to 0)
        } else {
            add(0 to 1)
        }
        for (i in 1 until n) {
            if (sList[i] == 'E') {
                val pre = this[i - 1]
                add(pre.first + 1 to pre.second)
            } else {
                val pre = this[i - 1]
                add(pre.first to pre.second + 1)
            }
        }
    }

    // 作った累積配列を使って貪欲に試行する
    // 任意のSiをリーダーとしたとき、
    //   リーダーより西側にいるWをEに(a)
    //   リーダーより東側にいるEをWに(b)する必要がある
    // この人数はそれぞれ(a)は wToEList[i - 1].second で、
    // (b)は wToEList[n - 1].first - wToEList[i].first となり
    // (a) + (b)の最小値を求めればよい

    var result = Int.MAX_VALUE

    for (i in 0 until n) {
        val a = if (i == 0) 0 else wToEList[i - 1].second
        val b = wToEList[n - 1].first - wToEList[i].first
        val count = a + b
        if (count < result) {
            result = count
        }
    }

    println(result)
}