N = gets.chomp.chars.map(&:to_i) M = Array.new(1 << N.size) def dfs(used) return M[used] if M[used] unused = N.size.times.select{|i| used[i] == 0 } return (M[used] = 0) if unused.size < 3 cww = unused.combination(3) .select{|i,j,k| N[i] > 0 && N[i] != N[j] && N[j] == N[k] } return (M[used] = 0) if cww.empty? scores = cww.map{|i,j,k| N[i] * 100 + N[j] * 10 + N[k] + dfs(used | (1 << i) | (1 << j) | (1 << k)) } M[used] = scores.max end puts dfs(0)