using System; using System.Text; namespace CSharpPlayground { public class Program { static void Main() { string[] txt = Console.ReadLine().Split(' '); string numberN = txt[0]; string numberK = txt[1]; StringBuilder sb = new StringBuilder(); int k = Int32.Parse(numberK); ulong n = ulong.Parse(numberN); int[] digits = new int[numberN.Length]; for (int i = 0; i < numberN.Length; i++) digits[i] = Int32.Parse(numberN[i].ToString()); if (numberN.Length < k) { sb.Clear(); for (int i = 0; i < k; i++) sb.Append(5); } else if (CountFivesOnUlong(n + 1) >= k) { sb.Append(n + 1); } else if (k == 1) { while (true) { n = n + 1; if (CountFivesOnUlong(n) >= 1) { sb.Append(n); break; } } } else { digits = AddZeroAtFirst(digits); for (int i = digits.Length - 1; i > 0; i--) { if (Check(digits, n, k)) break; if (digits[i] < 5) { digits[i] = 5; if (Check(digits, n, k)) { sb.Append(ConvertToUlong(digits)); break; } } else if (digits[i] >= 5) { if (digits[i - 1] == 9) { digits[i] = 5; if (Check(digits, n, k)) { sb.Append(ConvertToUlong(digits)); break; } for (int j = i - 1; j >= 0; j--) { if (digits[j] == 9) digits[j] = 0; else { digits[j]++; break; } } if (Check(digits, n, k) && CountFives(digits) == k) { sb.Append(ConvertToUlong(digits)); break; } } else { digits[i - 1]++; digits[i] = 5; if (Check(digits, n, k)) { sb.Append(ConvertToUlong(digits)); break; } } } } if(CountFives(digits) > k) { for(int i = 1; i < digits.Length - 1; i++) { if(digits[i] == 5) { digits[i] = 0; if (Check(digits, n, k)) { sb.Clear(); sb.Append(ConvertToUlong(digits)); } else digits[i] = 5; } } } } Console.WriteLine(sb); } private static int CountFives(int[] digits) { int sum = 0; for (int i = 0; i < digits.Length; i++) if (digits[i] == 5) sum++; return sum; } private static bool Check(int[] digits, ulong n, int k) { if (CountFives(digits) >= k && ConvertToUlong(digits) > n) return true; else return false; } private static ulong ConvertToUlong(int[] digits) { string tmp = ""; for (int i = 0; i < digits.Length; i++) { tmp += digits[i]; } return ulong.Parse(tmp); } private static int[] AddZeroAtFirst(int[] digits) { int[] tmp = new int[digits.Length + 1]; tmp[0] = 0; for (int i = 1; i < tmp.Length; i++) tmp[i] = digits[i - 1]; return tmp; } private static int CountFivesOnUlong(ulong n) { int counter = 0; ulong number = n; while (number != 0) { if (number % 10 == 5) counter++; number = number / 10; } return counter; } } }