public static void Main()
Console.WriteLine(ValidateFin("A1BS31Z0430336179"));
Console.WriteLine(ValidateFin("0Ly341Ü59810ΙX"));
private static string ValidateFin(string fin)
var finLength = fin.Length - 1;
for (var i = finLength; i >= 0; i--)
Console.Write(fin[i] + "-" + GetNumber(fin[i]) + "-" + (GetNumber(fin[i]) * multiplicator) + "|");
sum += GetNumber(fin[i]) * multiplicator;
return output == 10 ? "X" : output.ToString();
private static int GetNumber(char c)
if (Char.IsDigit(c)) return (int)(c - '0');
c = ConvertSpecialCharacters(c);
var output = ((c - 64) % 9);
output += ((int)c <= ((int)'R')) ? 0 : 1;
return output == 0 ? 9 : output;
private static char ConvertSpecialCharacters(char c)