private const int UniqueChars = 4;
private const int MaxSequenceNumber = 4;
private static void Main(string[] args)
var pwds = new[] { "765412", "295678", "934561", "401239", "982123", "986522", "321795", "010118", "987332", "082941" };
Console.WriteLine($"\n\tunique {UniqueChars}");
Console.WriteLine($"\tmax sequence size {MaxSequenceNumber}");
foreach (var pwd in pwds)
Console.WriteLine($"\t{pwd} = {IsValid(pwd)}");
private static bool IsValid(string password)
if (password.Select(x => Convert.ToInt32(x)).Distinct().Count() < UniqueChars)
if (password.StartsWith("0"))
for (int i = 0; i < password.Length - 1; i++)
if ((Math.Max(Convert.ToInt32(password[i].ToString()), Convert.ToInt32(password[i + 1].ToString())) - Math.Min(Convert.ToInt32(password[i].ToString()), Convert.ToInt32(password[i + 1].ToString()))) == 1)
var currentSign = Convert.ToInt32(password[i].ToString()) - Convert.ToInt32(password[i + 1].ToString());
if (lastSign != currentSign)
if (currentSequence == MaxSequenceNumber - 1)