"Dati due stringhe, trova e restituisci la sottostringa comune più lunga."
'str1 = "abcdef"
str2 = "abcxyz"' translates to: 

'str1 = "abcdef"
str2 = "abcxyz"'
# Programma per trovare la sottostringa comune più lunga

def longest_common_substring(str1, str2):
  # calcola la lunghezza di entrambe le stringhe
  l1 = len(str1)
  l2 = len(str2)

  # inizializza una matrice con tutti 0
  matrix = [[0 for x in range(l2+1)] for x in range(l1+1)]

  # segna 1 per ogni lettera comune in entrambe le stringhe
  for i in range(l1):
    for j in range(l2):
      if str1[i] == str2[j]:
        matrix[i+1][j+1] = matrix[i][j] + 1
      else:
        matrix[i+1][j+1] = 0

  # ottieni la lunghezza massima della sottostringa comune
  result = 0
  for i in range(l1+1):
    for j in range(l2+1):
      result = max(result, matrix[i][j])

  # restituisci il risultato
  return result

# Programma principale
str1 = "abcdef"
str2 = "abcxyz"
result = longest_common_substring(str1, str2)

print("La sottostringa comune più lunga è:", result) # Stampa 3