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"))
var converted = password.Select(x => Convert.ToInt32(x.ToString())).ToArray();
for (int i = 0; i < password.Length - 1; i++)
var current = converted[i];
var next = converted[i + 1];
if ((Math.Max(current, next) - Math.Min(current, next)) == 1)
var currentSign = current - next;
if (lastSign != currentSign)
if (currentSequence == MaxSequenceNumber - 1)