using System.Buffers; using System.Buffers.Text; using System.Runtime.CompilerServices; using System.Text; namespace CpLibrary.Contest { public class SolverH : SolverBase { static void Main() => new SolverH().RunOnline(); public override void Solve() { var s = sr.ReadString(); var ans = 0; var ren = 0; var tmp = 0; var yukicoder = "yukicoder"; for (int i = 0; i < s.Length; i++) { if (s[i] == yukicoder[tmp]) { if (++tmp == yukicoder.Length) { tmp = 0; ++ren; ans.Chmax(ren); } } else { tmp = 0; ren = 0; } } sw.WriteLine(ans); } public override void Init() { /* * Write your init code here! */ } } } #region Expanded by https://github.com/kzrnm/SourceExpander namespace CpLibrary { public interface ISolver { public void Run(StreamReader sr, StreamWriter sw); } } namespace CpLibrary { public abstract class SolverBase : ISolver { public bool StartsOnThread { get; set; } = false; public int Testcases { get; set; } = 1; public Scanner sr; public StreamWriter sw; public abstract void Init(); public abstract void Solve(); public void Run(StreamReader reader, StreamWriter writer) { this.sw = writer; sr = new Scanner(reader); Console.SetOut(writer); if (StartsOnThread) { var thread = new Thread(new ThreadStart(RunInternal), 1 << 27); thread.Start(); thread.Join(); } else { RunInternal(); } } void RunInternal() { Init(); var testcases = Testcases; while (testcases-- > 0) { Solve(); } } protected void RunOnline() { var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }; var sr = new StreamReader(Console.OpenStandardInput()); Run(sr, sw); Console.Out.Flush(); } } } namespace CpLibrary { public static class Extension { public static string Join(this IEnumerable x, string separator = "") => string.Join(separator, x); public static string Join(this IEnumerable x, char separator) => string.Join(separator, x); public static int UpperBound(this IList list, T value) => list.BinarySearch(value, true, 0, list.Count, Comparer.Default); public static int LowerBound(this IList list, T value) => list.BinarySearch(value, false, 0, list.Count, Comparer.Default); public static int BinarySearch(this IList list, T value, bool isUpperBound, int index, int length, Comparer comparer) { var low = index - 1; var high = index + length; while (high - low > 1) { var mid = low + (high - low) / 2; var res = comparer.Compare(list[mid], value); if (res < 0 || (isUpperBound && res == 0)) low = mid; else high = mid; } return high; } public static bool Chmax(ref this T a, T b) where T : struct, IComparable { if (a.CompareTo(b) >= 0) return false; a = b; return true; } public static bool Chmin(ref this T a, T b) where T : struct, IComparable { if (a.CompareTo(b) <= 0) return false; a = b; return true; } } } namespace CpLibrary { public class Scanner { public Stream stream { get; private set; } byte[] buffer; int length; int index; readonly static byte[] DEFAULT_SEPARATORS = { (byte)'\n', (byte)'\r', (byte)'\t', (byte)' ' }; byte[] separators; public Scanner(Stream stream, byte[] separators, int size = 1 << 12) { this.stream = stream; this.separators = separators; buffer = GC.AllocateUninitializedArray(size); length = index = 0; } public Scanner(Stream stream, int size = 1 << 12) : this(stream, DEFAULT_SEPARATORS, size) { } public Scanner(int size = 1 << 12) : this(Console.OpenStandardInput(), DEFAULT_SEPARATORS, size) { } public Scanner(StreamReader sr, byte[] separators, int size = 1 << 12) : this(sr.BaseStream, separators, size) { } public Scanner(StreamReader sr, int size = 1 << 12) : this(sr.BaseStream, DEFAULT_SEPARATORS, size) { } [MethodImpl(MethodImplOptions.AggressiveInlining)] static bool IsSeparator(byte c) => c <= ' '; [MethodImpl(MethodImplOptions.AggressiveInlining)] static bool IsNewLine(byte c) => c >= '\n' && c <= '\r'; void Fill() { if ((uint)index >= (uint)length) { length = stream.Read(buffer, 0, buffer.Length); index = 0; if (length < buffer.Length) buffer[length] = (byte)'\n'; } while (IsSeparator(buffer[index])) { index++; if ((uint)index >= (uint)length) { length = stream.Read(buffer, 0, buffer.Length); index = 0; if (length < buffer.Length) buffer[length] = (byte)'\n'; } } if (index + 64u >= length && !IsSeparator(buffer[^1])) { buffer.AsSpan(index, length - index).CopyTo(buffer); length -= index; index = 0; length = stream.Read(buffer, length, buffer.Length - length) + length; if (length < buffer.Length) buffer[length] = (byte)'\n'; } } public Span ReadToken() { if ((uint)index >= (uint)length) { length = stream.Read(buffer, 0, buffer.Length); index = 0; } while (IsSeparator(buffer[index])) { index++; if ((uint)index >= (uint)length) { length = stream.Read(buffer, 0, buffer.Length); index = 0; } } var next = buffer.AsSpan(index, length - index).IndexOfAny(separators.AsSpan()); if (length < buffer.Length) { var p = index; index = (int)Math.Min((uint)(next), (uint)(length - index)) + index; return buffer.AsSpan(p, index - p); } var pool = ArrayPool.Shared.Rent(buffer.Length); var pindex = 0; while (length > 0 && (uint)next >= (uint)length) { if (pool.Length - pindex < length - index) Resize(ref pool, pool.Length); buffer.AsSpan(index).CopyTo(pool.AsSpan(pindex)); pindex += length - index; length = stream.Read(buffer, 0, buffer.Length); index = 0; next = buffer.AsSpan(index, length - index).IndexOfAny(separators); } if (next == -1) next = length; if (pool.Length - pindex < next) Resize(ref pool, pool.Length); buffer.AsSpan(index, next).CopyTo(pool.AsSpan(pindex)); pindex += next; index = next + index; try { return pool.AsSpan(0, pindex); } finally { ArrayPool.Shared.Return(pool); } } void Resize(ref T[] arr, int l) { var p = arr; arr = ArrayPool.Shared.Rent(l << 1); p.AsSpan().CopyTo(arr); ArrayPool.Shared.Return(p); } public string Read() => Encoding.UTF8.GetString(ReadToken()); public string ReadString() => Read(); public string[] ReadStringArray(int n) { var arr = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { arr[i] = ReadString(); } return arr; } public uint ReadUInt() { Fill(); Utf8Parser.TryParse(buffer.AsSpan(index), out uint value, out int bc); index += bc; return value; } public int ReadInt() { Fill(); Utf8Parser.TryParse(buffer.AsSpan(index), out int value, out int bc); index += bc; return value; } public ulong ReadULong() { Fill(); Utf8Parser.TryParse(buffer.AsSpan(index), out ulong value, out int bc); index += bc; return value; } public long ReadLong() { Fill(); Utf8Parser.TryParse(buffer.AsSpan(index), out long value, out int bc); index += bc; return value; } public double ReadDouble() { Fill(); Utf8Parser.TryParse(buffer.AsSpan(index), out double value, out int bc); index += bc; return value; } public decimal ReadDecimal() { Fill(); Utf8Parser.TryParse(buffer.AsSpan(index), out decimal value, out int bc); index += bc; return value; } public int[] ReadIntArray(int n) => ReadValueArray(n); public uint[] ReadUIntArray(int n) => ReadValueArray(n); public ulong[] ReadULongArray(int n) => ReadValueArray(n); public long[] ReadLongArray(int n) => ReadValueArray(n); public double[] ReadDoubleArray(int n) => ReadValueArray(n); public decimal[] ReadDecimalArray(int n) => ReadValueArray(n); [MethodImpl(MethodImplOptions.AggressiveInlining)] public T ReadValue() { if (typeof(T) == typeof(int)) return (T)(object)ReadInt(); if (typeof(T) == typeof(uint)) return (T)(object)ReadUInt(); if (typeof(T) == typeof(long)) return (T)(object)ReadLong(); if (typeof(T) == typeof(ulong)) return (T)(object)ReadULong(); if (typeof(T) == typeof(double)) return (T)(object)ReadDouble(); if (typeof(T) == typeof(decimal)) return (T)(object)ReadDecimal(); if (typeof(T) == typeof(string)) return (T)(object)ReadString(); throw new NotSupportedException(); } public (T1, T2) ReadValue() => (ReadValue(), ReadValue()); public (T1, T2, T3) ReadValue() => (ReadValue(), ReadValue(), ReadValue()); public (T1, T2, T3, T4) ReadValue() => (ReadValue(), ReadValue(), ReadValue(), ReadValue()); public (T1, T2, T3, T4, T5) ReadValue() => (ReadValue(), ReadValue(), ReadValue(), ReadValue(), ReadValue()); public (T1, T2, T3, T4, T5, T6) ReadValue() => (ReadValue(), ReadValue(), ReadValue(), ReadValue(), ReadValue(), ReadValue()); public (T1, T2, T3, T4, T5, T6, T7) ReadValue() => (ReadValue(), ReadValue(), ReadValue(), ReadValue(), ReadValue(), ReadValue(), ReadValue()); public T1[] ReadValueArray(int n) { var arr = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { arr[i] = ReadValue(); } return arr; } public (T1[], T2[]) ReadValueArray(int n) { var a1 = GC.AllocateUninitializedArray(n); var a2 = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { (a1[i], a2[i]) = ReadValue(); } return (a1, a2); } public (T1[], T2[], T3[]) ReadValueArray(int n) { var a1 = GC.AllocateUninitializedArray(n); var a2 = GC.AllocateUninitializedArray(n); var a3 = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { (a1[i], a2[i], a3[i]) = ReadValue(); } return (a1, a2, a3); } public (T1[], T2[], T3[], T4[]) ReadValueArray(int n) { var a1 = GC.AllocateUninitializedArray(n); var a2 = GC.AllocateUninitializedArray(n); var a3 = GC.AllocateUninitializedArray(n); var a4 = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { (a1[i], a2[i], a3[i], a4[i]) = ReadValue(); } return (a1, a2, a3, a4); } public (T1[], T2[], T3[], T4[], T5[]) ReadValueArray(int n) { var a1 = GC.AllocateUninitializedArray(n); var a2 = GC.AllocateUninitializedArray(n); var a3 = GC.AllocateUninitializedArray(n); var a4 = GC.AllocateUninitializedArray(n); var a5 = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { (a1[i], a2[i], a3[i], a4[i], a5[i]) = ReadValue(); } return (a1, a2, a3, a4, a5); } public (T1[], T2[], T3[], T4[], T5[], T6[]) ReadValueArray(int n) { var a1 = GC.AllocateUninitializedArray(n); var a2 = GC.AllocateUninitializedArray(n); var a3 = GC.AllocateUninitializedArray(n); var a4 = GC.AllocateUninitializedArray(n); var a5 = GC.AllocateUninitializedArray(n); var a6 = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { (a1[i], a2[i], a3[i], a4[i], a5[i], a6[i]) = ReadValue(); } return (a1, a2, a3, a4, a5, a6); } public (T1[], T2[], T3[], T4[], T5[], T6[], T7[]) ReadValueArray(int n) { var a1 = GC.AllocateUninitializedArray(n); var a2 = GC.AllocateUninitializedArray(n); var a3 = GC.AllocateUninitializedArray(n); var a4 = GC.AllocateUninitializedArray(n); var a5 = GC.AllocateUninitializedArray(n); var a6 = GC.AllocateUninitializedArray(n); var a7 = GC.AllocateUninitializedArray(n); for (int i = 0; i < n; i++) { (a1[i], a2[i], a3[i], a4[i], a5[i], a6[i], a7[i]) = ReadValue(); } return (a1, a2, a3, a4, a5, a6, a7); } public (T1, T2)[] ReadTupleArray(int n) { var ret = GC.AllocateUninitializedArray<(T1, T2)>(n); for (int i = 0; i < n; i++) { ret[i] = ReadValue(); } return ret; } public (T1, T2, T3)[] ReadTupleArray(int n) { var ret = GC.AllocateUninitializedArray<(T1, T2, T3)>(n); for (int i = 0; i < n; i++) { ret[i] = ReadValue(); } return ret; } public (T1, T2, T3, T4)[] ReadTupleArray(int n) { var ret = GC.AllocateUninitializedArray<(T1, T2, T3, T4)>(n); for (int i = 0; i < n; i++) { ret[i] = ReadValue(); } return ret; } public (T1, T2, T3, T4, T5)[] ReadTupleArray(int n) { var ret = GC.AllocateUninitializedArray<(T1, T2, T3, T4, T5)>(n); for (int i = 0; i < n; i++) { ret[i] = ReadValue(); } return ret; } public (T1, T2, T3, T4, T5, T6)[] ReadTupleArray(int n) { var ret = GC.AllocateUninitializedArray<(T1, T2, T3, T4, T5, T6)>(n); for (int i = 0; i < n; i++) { ret[i] = ReadValue(); } return ret; } public (T1, T2, T3, T4, T5, T6, T7)[] ReadTupleArray(int n) { var ret = GC.AllocateUninitializedArray<(T1, T2, T3, T4, T5, T6, T7)>(n); for (int i = 0; i < n; i++) { ret[i] = ReadValue(); } return ret; } } } #endregion Expanded by https://github.com/kzrnm/SourceExpander