def search(s, s_len, len_max, num) return if len_max > s_len && len_max < @len_max if s_len == 0 && num > 1 @len_max = [@len_max, len_max].max return end (1...s_len).each do |i| if s[0..i] == s[0..i].reverse len_max = [len_max, i + 1].max search(s[i + 1..-1], s_len - (i + 1), len_max, num + 1) end end end s = gets.strip @len_max = 0 if s.length == 2 puts '1' else search(s, s.length, 0, 0) p @len_max end