<prompt> Kwa kuzingatia masharti mawili sindano na haystack, rudisha faharasa ya utokeaji wa kwanza wa sindano katika haystack, au -1 ikiwa sindano si sehemu ya haystack.Mfano wa 1:Ingizo: haystack sadbutsad, sindano huzuniPato: 0Maelezo: huzuni hutokea katika faharasa 0 na 6.Tukio la kwanza liko kwenye faharisi 0, kwa hivyo tunarudi 0.Mfano wa 2:Ingizo: haystack leetcode, sindano leetoPato: -1Maelezo: leeto haikutokea katika leetcode, kwa hivyo tunarudi -1.Vikwazo: 1 haystack.length, sindano.length 104 haystack na sindano inajumuisha herufi ndogo za Kiingereza pekee.  <response>: chatudef strStrhaystack: str, sindano: str - int: ikiwa sio sindano: kurudi 0 jaribu: index haystack.indexsindano kurudi index isipokuwa ValueError: kurudi -1maelezoKanuni hutafuta utokeaji wa kwanza wa mfuatano wa sindano katika mfuatano wa haystack. Kwanza, hukagua ikiwa sindano haina kitu, na ikiwa iko, inarejesha 0. Vinginevyo, hutumia vitendakazi vya pata, indexOf au index vilivyojengewa ndani vinavyotolewa na aina ya data ya mfuatano wa lugha. Chaguo za kukokotoa hizi hurejesha faharasa ya utokeaji wa kwanza wa mfuatano mdogo uliobainishwa. Ikiwa kamba ndogo haipatikani, inarudisha maadili maalum kama kamba::npos kwa C, -1 kwa Java, na kuongeza ubaguzi wa ValueError kwa Python. Kulingana na thamani iliyorejeshwa, kanuni hurejesha faharasa ya tukio la kwanza au -1, kuonyesha kwamba sindano si sehemu ya haystack. 