# -*- coding:utf-8 -*-
import sys

DBG_FLAG = 0

def p_dbg(str):
    if(DBG_FLAG == 1):
        sys.stdout.flush()
        print str

S=raw_input()
# 回文でない文字列を作るには
# -> 文字列を一旦ソートする。
# -> 特定の文字を一つ選択し、先頭に置く
# -> 選択した文字とは別の文字を選択し、次に配置する。
#    このとき、i-2番目の文字と一致しないこと。

# 回文ではない
# -> 1.同じ文字が2文字以上連続しない
#    2.異なる2文字の部分文字列があるとき、直後に
#      逆順の文字列が存在しない

array = list(S)
p_dbg(array)

a_ary = [char for char in array if char == "a"]
b_ary = [char for char in array if char == "b"]
c_ary = [char for char in array if char == "c"]

a_len = len(a_ary)
b_len = len(b_ary)
c_len = len(c_ary)

if ((a_len + b_len + c_len) > 2) and ((a_len == 0) or (b_len == 0) or (c_len == 0)):
    print "NO"
else:
    result = "NO"
    tmp_array = []
    while (a_len + b_len + c_len) > 2:
        if (a_len == 0) or (b_len == 0) or (c_len == 0):
            result = "NO"
            break
        else:
            a_len = a_len -1
            b_len = b_len -1
            c_len = c_len -1
    if result != "NO":
        print "NO"
    else:
        print "YES"
