- Difficulty: Hard
- Tags: LeetCode, Hard, Math, String, Dynamic Programming, String Matching, leetcode-2851, O(n + logk), O(n), DP, Matrix Exponentiation, Z-Function, KMP Algorithm
Problem
You are given two strings s and t of equal length n. You can perform the following operation on the string s:
- Remove a suffix of sof lengthlwhere0 < l < nand append it at the start ofs.
 For example, lets = 'abcd'then in one operation you can remove the suffix'cd'and append it in front ofsmakings = 'cdab'.
You are also given an integer k. Return the number of ways in which s can be transformed into t in exactly k operations.
Since the answer can be large, return it modulo 109 + 7.
Example 1:
Input: s = "abcd", t = "cdab", k = 2 Output: 2 Explanation: First way: In first operation, choose suffix from index = 3, so resulting s = "dabc". In second operation, choose suffix from index = 3, so resulting s = "cdab". Second way: In first operation, choose suffix from index = 1, so resulting s = "bcda". In second operation, choose suffix from index = 1, so resulting s = "cdab".
Example 2:
Input: s = "ababab", t = "ababab", k = 1 Output: 2 Explanation: First way: Choose suffix from index = 2, so resulting s = "ababab". Second way: Choose suffix from index = 4, so resulting s = "ababab".
Constraints:
- 2 <= s.length <= 5 * 105
- 1 <= k <= 1015
- s.length == t.length
- sand- tconsist of only lowercase English alphabets.